繁体   English   中英

使用SQL按星期分组小时

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM