在sql server中,我有一个如下表:
processName initDateTime
processA 2020-06-15 13:31:15.330
processB 2020-06-20 10:00:30.000
processA 2020-06-20 13:31:15.330
...
and so on
我需要按processname分组,对于每个processname,我需要按月份(#bymonth)、天(#byday)和小时(#byhour)获取记录数。
最好的方法是什么?下面是什么?sql查询是什么?
可能的结果:
processName Month Day Hour #byMonth #byDay #byHour #total(by process)
processA January 15 17 4 3 2 7
processA January 15 20 4 3 1 7
processA January 20 05 4 2 3 7
processA January 20 13 4 2 1 7
processA March 04 05 3 2 3 7
processA March 04 17 3 2 2 7
processA March 15 05 3 3 3 7
...and so on for the rest of processes name
2条答案
按热度按时间nfeuvbwi1#
我认为您需要聚合和窗口函数:
ldxq2e6h2#
在可能的情况下,我喜欢将日期作为日期返回给调用者,这样他们也可以将日期作为排序、转换为本地时间,甚至确保显示的语言是相关的。所以如果是我,我会做以下事情:
返回:
如果需要sql中的日数、月名等,可以使用
DATEPART
或者DATENAME
,但如上所述,这在表示层中处理得更好,因此您可以处理区域设置或特定的用户设置。