今年八月包含第31、32、33和34周。
如何进行查询以获取每月(8)中每个星期的所有回报?
示例:
select sum(a) as MyTot
from MyTable
where week numbers are included in month
像泥一样清晰吗?
我可以获得每个星期的收益,因为其中有一个包含星期数的字段。我需要汇总任何给定月份中的所有星期。
谢谢
答案 0 :(得分:0)
您可以创建一个日历表,其中包含有关日期的各种数据-工作日,星期几,一年中的某日,每月的某天,月份的名称,月份的数字等。然后,您可以将当前表与日历表连接起来,并按相关月份进行过滤。
实际上,正如亚伦·伯特兰德(Aaron Bertrand)在他的Creating a date dimension or calendar table in SQL Server文章中指出的那样,这可能是一件非常有用的事情。
另一种选择是计算该月的第一个和最后一个日期,获取这些日期的星期数,然后使用它从表中选择数据:
DECLARE @StartDate date = DATEADD(Month, DATEDIFF(Month, 0, GetDate()), 0)
DECLARE @EndDate date = DATEADD(Day, -1, DATEADD(Month, 1, @StartDate))
SELECT SUM(a) as MyTot
FROM MyTable
WHERE weekNumber >= DATEPART(WEEK, @StartDate)
AND weekNumber <= DATEPART(WEEK, @EndDate)
但是请注意,DATEPART(WEEK, @Date)
返回值取决于SET DATEFIRST
设置的值。您可能还想看看ISO_WEEK
。