【发布时间】:2017-11-25 06:49:01
【问题描述】:
我想创建每小时报告,这个查询运行良好。
SELECT
FORMAT(PingLogDate,'yyyy-MM-dd-HH:00:00') AS CalculatedTime,
COUNT(PingLogID) AS PingCount
FROM
tbl_PingLog
GROUP BY
FORMAT(PingLogDate,'yyyy-MM-dd-HH:00:00')
ORDER BY
FORMAT(PingLogDate,'yyyy-MM-dd-HH:00:00')
但我支持 SQL Server 2008 并且Format 是 SQL Server 2012 中的新功能,所以我尝试了这段代码
SELECT
CAST(PingLogDate AS date) AS CalculatedDate,
DATEPART(hour, PingLogDate) AS CalculatedTime,
COUNT(PingLogID) AS PingCount
FROM
tbl_PingLog
GROUP BY
CAST(PingLogDate AS date), DATEPART(hour, PingLogDate)
ORDER BY
CAST(PingLogDate AS date), DATEPART(hour, PingLogDate)
问题是不想为日期和小时设置 2 列,例如
第一个查询的结果是
CalculatedTime | PingCount
--------------------+-----------
2017-11-07-12:00:00 | 359
2017-11-07-13:00:00 | 359
2017-11-07-14:00:00 | 350
第二次查询的结果是
CalculatedDate |CalculatedTime | PingCount
---------------+---------------+----------
2017-11-07 |12 | 359
2017-11-07 |13 | 359
2017-11-07 |14 | 350
我不想要第二个。我要第一个。如何使用 SQL Server 2008 支持的工具来做到这一点。
【问题讨论】:
标签: sql sql-server sql-server-2008 tsql