【发布时间】:2016-08-04 20:16:29
【问题描述】:
我有一个名为 temp 的表。在此表中,我有日期和值。
Date | Value
2016/04/01 07:00am | 1
2016/04/01 09:00am | 2
2016/04/01 11:00am | 3
...
2016/04/01 07:00pm | 5
2016/04/01 11:00pm | 2
...
2016/04/02 07:00am | 10
2016/04/02 09:00am | 13
2016/04/02 11:00am | 1
...
2016/04/02 07:00pm | 32
2016/04/02 09:00pm | 40
我想退货:
Date | Value
04/01/2016 11:00am | 3
04/01/2016 07:00pm | 5
04/02/2016 09:00am | 13
04/02/2016 09:00pm | 40
这个想法是以 12 小时为间隔进行分组,然后找到该组的最大值。
到目前为止,我有:
SELECT t.date, max(t.value)
FROM temp t
WHERE t.Date between DATEADD(hour, 7, '04/01/2016') and DATEADD(minute, 1859, '04/02/2016')
GROUP BY DATEPART(Hour, t.date)%12, t.date
ORDER BY Date
但它返回所有数据,没有 12 小时组。
有什么想法吗?
【问题讨论】:
-
你们的 12 小时小组每天都一样吗 - 午夜到中午和 12:01 - 11:59 pm?
-
是的,每天都一样。
-
如果您的日期实际上包含上午/下午,您还可以按日期的最后两个字符对其进行分组
标签: sql sql-server