【发布时间】:2018-09-11 10:28:25
【问题描述】:
我有以下查询
SELECT DATEPART(YEAR, Date_Reported) AS 'Year',
DATEPART(MONTH, Date_Reported) AS 'Month',
DATEPART(DAY, Date_Reported) AS 'Day',
COUNT(*) AS 'Transactions'
FROM TX
WHERE Date_Reported >= DATEADD(day,-7, GETDATE())
GROUP BY DATEPART(DAY, Date_Reported),
DATEPART(MONTH, Date_Reported),
DATEPART(YEAR, Date_Reported)
ORDER BY 'Year',
'Month',
'Day'
它给我的是最近 7 天的交易,但是当一天的交易为 0 时,它不会显示一行。我想要的是没有行在事务列下显示为 0 值,如下所示:
YEAR | MONTH | DAY | TRANSACTIONS
2018 | 9 | 4 | 2
2018 | 9 | 5 | 2
2018 | 9 | 6 | 0
2018 | 9 | 7 | 5
2018 | 9 | 8 | 2
2018 | 9 | 9 | 0
2018 | 9 | 10 | 0
有什么想法吗?
【问题讨论】:
-
我要添加到 Tanner 链接的唯一内容是使用计数表,而不是 rCTE。
-
如果您希望最早日期的计数不取决于您运行查询的时间,那么与
DATEADD(day,-7, CAST(GETDATE() AS DATE))相比可能会更准确。
标签: sql-server