我有皮卡表,试图写一份报告,告诉我一年中每个月有多少皮卡。
看起来应该是这样的
到目前为止,我有这个
SELECT
DATEPART(MONTH, PickupDate)as 'Month',
count (CASE WHEN DATEPART(YEAR, PickupDate) = 2012 THEN 1 ELSE 0 end)as 'Pickups'
,count (CASE WHEN CategCode = 'NB' and DATEPART(YEAR, PickupDate) = 2012 THEN 1 ELSE 0 end) as 'Newborn'
FROM dbo.Pickup
where DATEPART(YEAR, PickupDate) = 2012
group by DATEPART(MONTH, PickupDate)
WITH ROLLUP
我无法弄清楚如何计算新生儿专栏,任何想法? 到目前为止,我的查询计算得不对,只计算从皮卡表中的所有皮卡
答案 0 :(得分:1)
将COUNT
更改为SUM
或将ELSE 0
更改为ELSE NULL
。
COUNT(0,1,0)
= 3,SUM(0, 1, 0)
= 1,COUNT(NULL,1,NULL)
= 1
如果我可以提供另一个提示,请尝试使用日期比较而不是DATEPART函数重写查询 - 使用此函数将阻止优化器使用索引。这里有一个日历表。