【问题标题】:Select with count by months按月数选择
【发布时间】:2013-03-09 01:05:17
【问题描述】:

我有 Pickup 表,并试图写一份报告,显示一年中每个月有多少次皮卡。
它应该看起来像这样

到目前为止我有这个

  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

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

【问题讨论】:

    标签: sql sql-server-2008 select count case


    【解决方案1】:

    COUNT 更改为SUM 或将ELSE 0 更改为ELSE NULL

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

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

    【讨论】:

    • 不知道如何以及在何处使用比较
    • 再问一个问题,我会给你答案
    • 给我几分钟来完成这个查询
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-02-10
    • 1970-01-01
    • 1970-01-01
    • 2013-08-29
    • 1970-01-01
    • 1970-01-01
    • 2019-02-03
    相关资源
    最近更新 更多