0

我有皮卡表,并试图写一份报告,显示一年中每个月有多少皮卡。
它应该看起来像这样
在此处输入图像描述

我到目前为止我有这个

  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

我不知道如何计算新生儿列,有什么想法吗?到目前为止,我的查询计算不正确,它只计算取件表中的所有取件。
在此处输入图像描述

4

1 回答 1

1

更改COUNTSUM或更改ELSE 0ELSE NULL

COUNT(0,1,0)= 3, SUM(0, 1, 0)= 1, COUNT(NULL,1,NULL)= 1

如果我可以提供另一个提示,请尝试使用日期比较而不是 DATEPART 函数重写查询 - 使用此函数将阻止优化器使用索引。日历表是去这里的方式。

于 2013-03-20T04:28:04.383 回答