可能的重复:
TSQL 计算月份的周数
这是我的 SQL 查询
SELECT DATEPART(MONTH,PaymentDate) AS 'Month',
DATEPART(WEEK,PaymentDate) AS 'Week #',
SUM(COALESCE(Amount,0)) AS 'Amount',
SUM(COALESCE(Balance,0)) AS 'Balance'
FROM Payment
WHERE (MONTH(PaymentDate) = MONTH('2012-09-01'))
GROUP BY DATEPART(MONTH,PaymentDate),
DATEPART(WEEK,PaymentDate)
GO
Run Code Online (Sandbox Code Playgroud)
我试图以每周的方式获得一个月的总付款。
现在我有两个问题
1)如您所见,它显示的是一年中的第 # 周而不是那个月。
2) 还显示 6 周组而不是 4 周。
我该如何解决。
谢谢。
日期很难,因为日历是不合逻辑的。
我在这里的评论中假设是公历。
如果您按“每月的周数”分组,您需要首先定义您希望看到的内容。如果您希望每个月的“第一周”从该月的第一天开始,那么除了二月(四分之三)之外,每个月都有五个星期。
如果您希望“一周”从某一天开始,那么每个月都有五到六周,偶尔的 2 月除外。
假设您希望本月的第一个“周”是第 1-7 天,第二个是第 8-14 天,依此类推,那么您最好的选择是使用类似
CASE
WHEN DATEPART(DAY, PaymentDate) BETWEEN 1 AND 7 THEN 1
WHEN DATEPART(DAY, PaymentDate) BETWEEN 8 AND 14 THEN 2
WHEN DATEPART(DAY, PaymentDate) BETWEEN 15 AND 21 THEN 3
WHEN DATEPART(DAY, PaymentDate) BETWEEN 22 AND 28 THEN 4
ELSE 5
END
Run Code Online (Sandbox Code Playgroud)
(例如)。
然而,最重要的事情是准确定义您希望它在每种情况下的行为方式。然后查询可以遵循该查询。