【发布时间】:2019-12-04 18:32:21
【问题描述】:
我在使用跨越午夜的 GROUP BY Hour 时遇到问题。我需要按小时顺序对结果进行排序,但返回的值会在前几天的小时之前列出当前天的“小时”。
示例表:
DATE LINE_NUMBER TOTAL
2019-12-03 20:38:35 1 150
2019-12-03 20:38:35 2 200
2019-12-03 20:54:35 1 175
2019-12-03 20:54:35 2 210
2019-12-03 23:58:35 1 125
2019-12-03 23:58:35 2 250
2019-12-04 00:52:35 1 155
2019-12-04 00:52:35 2 205
2019-12-04 01:32:35 1 125
2019-12-04 01:32:35 2 275
2019-12-04 01:52:35 1 145
2019-12-04 01:52:35 2 225
当前 SQL 查询:
SELECT sum([TOTAL]) as HOURLY_TOTAL, LINE_NUMBER as LINE_NUMBER
FROM PRODUCTION_LINES
WHERE Date > '12/03/2019 15:30:00'
GROUP BY DATEPART(HOUR, [Date]), LINE_NUMBER
当前的 SQL 结果:
HOURLY_TOTAL LINE_NUMBER
155 1 (Data from current day)
270 1 (Data from current day)
325 1 (Data from previous day)
125 1 (Data from previous day)
205 2 (Data from current day)
500 2 (Data from current day)
410 2 (Data from previous day)
250 2 (Data from previous day)
这是我真正需要的顺序:
HOURLY_TOTAL LINE_NUMBER
325 1 (Data from previous day)
125 1 (Data from previous day)
410 2 (Data from previous day)
250 2 (Data from previous day)
155 1 (Data from current day)
270 1 (Data from current day)
205 2 (Data from current day)
500 2 (Data from current day)
在网上搜索线索后,看起来其他人的问题比我的要复杂得多,所以我没有看到任何适合我的情况的解决方案。
【问题讨论】:
标签: sql sql-server sorting group-by sql-order-by