[英]Grouping Hours by Week in using SQL
我正在尝试汇总总工作时间,并按周将其分组。 我的一周从星期一开始,到星期日结束。 我遇到的问题是,数字始终是第一周,但其余几周很好。 第一周的问题总是很低。
查看快照
这是我的代码
SELECT
UID,
CONVERT(VARCHAR, x.WeekBeginDate, 101) as WeekBeginDate,
x.TOTAL_HOURS
FROM
(SELECT
UID,
DATEADD(DD, CONVERT(INT, (DATEDIFF(DD, '1/1/1900', t.DT)/7)) * 7, '1/1/1900') [WeekBeginDate],
SUM(HOURS) AS TOTAL_HOURS
FROM
myTable t
WHERE
UID = 'test1'
AND DT >= DATEADD(WEEK, -6, GetDate())
GROUP BY
UID, CONVERT(INT, DATEDIFF(DD, '1/1/1900', t.DT)/7) ) x
ORDER BY
1
尝试执行以下操作以简化查询并正确显示窗口(小提琴: http ://sqlfiddle.com/#!3/ 35c8e/1 ):
set datefirst 1; --set first day of week to monday
select
DATEADD(DAY,(DATEPART(WEEKDAY, dt) - 1) * -1,dt) as WeekBeginDate,
SUM(hours) AS TotalHours
from hours
where
uid = 'test1'
and dt >= CAST(DATEADD(WEEK,-6,DATEADD(DAY,(DATEPART(WEEKDAY, GETDATE()) - 1) * -1,GETDATE())) AS date)
group by DATEADD(DAY,(DATEPART(WEEKDAY, dt) - 1) * -1,dt)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.