By using db<>fiddle, you agree to license everything you submit by Creative Commons CC0.
CREATE FUNCTION [dbo].[CompareStrings] (@NewDate Nvarchar(max), @Num Int)
RETURNS Nvarchar(max)
BEGIN
DECLARE @Str Nvarchar(max)
SET @Str = ''
IF LEFT(CONVERT(VARCHAR,DATEADD(DAY, @Num - DATEPART(WEEKDAY, @NewDate), @NewDate),120), 7) = LEFT(@NewDate, 7)
BEGIN
SET @Str = RIGHT(' ' + FORMAT(DATEADD(DAY, @Num - DATEPART(WEEKDAY, @NewDate), @NewDate), '%d'), 2)
END
RETURN @Str
END;
WITH CTE_GetDate AS (
SELECT CONVERT(DATE, '20200101') AS NewDate
UNION ALL
SELECT DATEADD(DAY, 1, NewDate)
FROM CTE_GetDate
WHERE DATEADD(DAY, 1, NewDate) <= CONVERT(DATE, '20201231'))
--
SELECT CASE WHEN LAG(Year_Month,1) OVER (PARTITION BY '' ORDER BY Year_Month) = Year_Month THEN '' ELSE Year_Month END AS 'Year_Month',
Sun,Mon,Tue,Wed,Thu,Fri,Sat
FROM (
SELECT LEFT(NewDate,7) AS 'Year_Month',
[dbo].CompareStrings(NewDate,1) AS 'Sun',
[dbo].CompareStrings(NewDate,2) AS 'Mon',
[dbo].CompareStrings(NewDate,3) AS 'Tue',
[dbo].CompareStrings(NewDate,4) AS 'Wed',
[dbo].CompareStrings(NewDate,5) AS 'Thu',
[dbo].CompareStrings(NewDate,6) AS 'Fri',
[dbo].CompareStrings(NewDate,7) AS 'Sat'
FROM CTE_GetDate
WHERE DatePart(DAY, NewDate)=1
OR DatePart(weekday , NewDate)=1
) AS TEMP
OPTION (MAXRECURSION 0)
Year_Month | Sun | Mon | Tue | Wed | Thu | Fri | Sat |
---|---|---|---|---|---|---|---|
2020-01 | 1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 | |
12 | 13 | 14 | 15 | 16 | 17 | 18 | |
19 | 20 | 21 | 22 | 23 | 24 | 25 | |
26 | 27 | 28 | 29 | 30 | 31 | ||
2020-02 | 1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 | |
9 | 10 | 11 | 12 | 13 | 14 | 15 | |
16 | 17 | 18 | 19 | 20 | 21 | 22 | |
23 | 24 | 25 | 26 | 27 | 28 | 29 | |
2020-03 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 | |
15 | 16 | 17 | 18 | 19 | 20 | 21 | |
22 | 23 | 24 | 25 | 26 | 27 | 28 | |
29 | 30 | 31 | |||||
2020-04 | 1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 | |
12 | 13 | 14 | 15 | 16 | 17 | 18 | |
19 | 20 | 21 | 22 | 23 | 24 | 25 | |
26 | 27 | 28 | 29 | 30 | |||
2020-05 | 1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 | |
10 | 11 | 12 | 13 | 14 | 15 | 16 | |
17 | 18 | 19 | 20 | 21 | 22 | 23 | |
24 | 25 | 26 | 27 | 28 | 29 | 30 | |
31 | |||||||
2020-06 | 1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 | |
14 | 15 | 16 | 17 | 18 | 19 | 20 | |
21 | 22 | 23 | 24 | 25 | 26 | 27 | |
28 | 29 | 30 | |||||
2020-07 | 1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 | |
12 | 13 | 14 | 15 | 16 | 17 | 18 | |
19 | 20 | 21 | 22 | 23 | 24 | 25 | |
26 | 27 | 28 | 29 | 30 | 31 | ||
2020-08 | 1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 | |
9 | 10 | 11 | 12 | 13 | 14 | 15 | |
16 | 17 | 18 | 19 | 20 | 21 | 22 | |
23 | 24 | 25 | 26 | 27 | 28 | 29 | |
30 | 31 | ||||||
2020-09 | 1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 | |
13 | 14 | 15 | 16 | 17 | 18 | 19 | |
20 | 21 | 22 | 23 | 24 | 25 | 26 | |
27 | 28 | 29 | 30 | ||||
2020-10 | 1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 | |
11 | 12 | 13 | 14 | 15 | 16 | 17 | |
18 | 19 | 20 | 21 | 22 | 23 | 24 | |
25 | 26 | 27 | 28 | 29 | 30 | 31 | |
2020-11 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 | |
15 | 16 | 17 | 18 | 19 | 20 | 21 | |
22 | 23 | 24 | 25 | 26 | 27 | 28 | |
29 | 30 | ||||||
2020-12 | 1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 | |
13 | 14 | 15 | 16 | 17 | 18 | 19 | |
20 | 21 | 22 | 23 | 24 | 25 | 26 | |
27 | 28 | 29 | 30 | 31 |