add batch remove batch split batch comment selection show hidden batches hide batch highlight batch
db<>fiddle
donate feedback about
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