我如何选择一个月的最后一周?

时间:2015-09-23 12:30:25

标签: sql-server-2012

我每天都有一张包含员工时间/客户信息的表格。我需要记录这些信息,并按周和按月汇总。我可以这样做。

我被困的地方是,在每个月的最后一周,我需要获取此信息,如果它是一个星期(在星期六之前结束),并提取此信息并插入表格或创建视图。 / p>

这些是表格中的字段。      EmployeeID,TypeOfPay,Warehouse,UserName,WorkedHours,WorkedDate,WeekEnding,DayOfWeek

3 个答案:

答案 0 :(得分:0)

看看这些讨论:

link1link2

他们展示了如何获得mounth的最后一个星期天。 您可以在条件中说明:

每天(currentDay)> DAY(lastSunday)         AND MONTH(currentDay)= MONTH(lastSunday)

答案 1 :(得分:0)

请检查:MSDN DATEPART()

;WITH Sell as (
SELECT CAST('20150826' as Date) dt, 1 Amount UNION ALL
SELECT '20150827' dt, 5 Amount UNION ALL
SELECT '20150828' dt, 4 Amount UNION ALL
SELECT '20150829' dt, 8 Amount UNION ALL
SELECT '20150901' dt, 9 Amount UNION ALL
SELECT '20150902' dt, 11 Amount UNION ALL
SELECT '20150903' dt, 3 Amount UNION ALL
SELECT '20150904' dt, 6 Amount UNION ALL
SELECT '20150905' dt, 7 Amount 
)

SELECT 
     DATEPART(MONTH, dt) as mnth
    , DATEPART(WEEK, dt) as wk
    ,SUM(Amount) as Sum
FROM Sell
GROUP BY DATEPART(MONTH, dt)
    , DATEPART(WEEK, dt) 
ORDER BY 1,2

答案 2 :(得分:0)

感谢您的帮助。

我最终创建了一个日历,并添加了一个应计列,并在月末用2标记了部分周。然后,我可以通过加入两个表来选择部分周。