【发布时间】:2012-03-13 20:44:29
【问题描述】:
我在 ssrs 折线图中使用以下查询。它根据每个订单日期计算每个月记录的订单数量。
我的问题是,当一个月没有订单时,而不是说零或空,它会一起删除该月的行。我希望它把它算为零,但 null 也可以。
基本上,我希望总是有十二行,无论它们是否包含信息。
我该如何解决这个问题?有什么我可以使用的表达方式吗?还是我遗漏了一些非常明显的东西?
SELECT
MONTH(Ord.OrdDate) AS 'MONTH',
COUNT(CASE WHEN @Worker_ID1 IS NULL OR @Worker_ID1 = Worker.ID THEN 1 END) AS 'Worker1',
COUNT(CASE WHEN @Worker_ID2 IS NULL OR @Worker_ID2 = Worker.ID THEN 1 END) AS 'Worker2',
COUNT(CASE WHEN @Worker_ID3 IS NULL OR @Worker_ID3 = Worker.ID THEN 1 END) AS 'Worker3',
COUNT(CASE WHEN @Worker_ID4 IS NULL OR @Worker_ID4 = Worker.ID THEN 1 END) AS 'Worker4',
COUNT(CASE WHEN @Worker_ID5 IS NULL OR @Worker_ID5 = Worker.ID THEN 1 END) AS 'Worker5'
FROM Ord
JOIN Prod ON Ord.Prod_ID = Prod.ID
JOIN ProdType ON Prod.ProdType_ID = ProdType.ID
JOIN Grouping ON Ord.Grouping_ID = Grouping.ID
JOIN Worker ON Grouping.Worker_ID = Worker.ID
WHERE @Year = YEAR(Ord.OrdDate)
AND (@ProdType_ID IS NULL OR @ProdType_ID = ProdType.ID)
GROUP BY MONTH(Ord.OrdDate)
【问题讨论】:
-
这不是严格的答案,所以我使用评论。您可以考虑按 MONTH(Ord.OrdDate) 和 Worker.ID 进行分组,然后使用 ssrs-2008 提供的数据透视表(如果我没记错的话,这是一个矩阵报告。)您可以将谓词更改为 AND Worker.ID IN (\ @Worker_ID1、\@Worker_ID2、\@Worker_ID3、\@Worker_ID4、\@Worker_ID5)。如果其中任何一个为 NULL,则它们被隐式地排除在 IN 子句之外。
标签: sql sql-server ssrs-2008 bids