sql server根据数据库的日历表生成每个月的周
时间: 2023-08-09 19:09:17 浏览: 58
您可以使用以下SQL语句来生成每个月的周:
```
WITH CTE_Dates AS (
SELECT CAST('2022-01-01' AS DATE) AS [Date]
UNION ALL
SELECT DATEADD(DAY, 1, [Date])
FROM CTE_Dates
WHERE [Date] < '2022-12-31'
),
CTE_Calendar AS (
SELECT
[Date],
DATEPART(YEAR, [Date]) AS [Year],
DATEPART(MONTH, [Date]) AS [Month],
DATEPART(DAY, [Date]) AS [Day],
DATENAME(WEEKDAY, [Date]) AS [Weekday]
FROM CTE_Dates
)
SELECT
[Year],
[Month],
DATEPART(WEEK, MIN([Date])) AS [WeekNumber],
MAX([Day]) AS [LastDayOfMonth]
FROM CTE_Calendar
WHERE [Weekday] = 'Monday'
GROUP BY [Year], [Month], DATEPART(YEAR, [Date]), DATEPART(MONTH, [Date])
ORDER BY [Year], [Month], [WeekNumber]
```
这个查询会生成从2022年1月到12月的所有日期,并将它们转换为“年”、“月”、“日”、“星期几”的形式。接着,我们只选择星期一的日期,并将它们按照年、月、周数进行分组,最后按照这个顺序进行排序。这样,您就可以生成每个月的周数了。
相关推荐
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)