Link to home
Start Free TrialLog in
Avatar of Manju
ManjuFlag for India

asked on

SQL Week Number from a specific month number and Starting day

Experts - I need to find week numbers from a specific month number and a start day.

Ex:

In SQL Table,  I have FiscalDate as smalldatetime column which will have dates from 2017 start to 2030 end.

Now, I need an SP which should have a parameter of month number and starting day.

Ex:
Exec SP_UpdateFiscalWeek(7, 'Sunday')

The above sp should consider July as the first month of the year & calculate the fiscal week's accordingly for the whole datasets & update Sunday as the starting day for week's calculation.
Avatar of Pawan Kumar
Pawan Kumar
Flag of India image

Week numbers are incorrect?
Avatar of Manju

ASKER

@Pawan - Yes, Now, I am going to get the week numbers and qtr numbers outside of our previous sp.

however need an sp to satisfy the above criteria
Here's a week pattern generator that may be helpful.

NOTE: I am assuming that because July 01, 2017 falls on a Saturday, your week starts on June 25, 2017. However, this logic can easily be modified to change the starting date accordingly.

USE tempdb;
GO

--Your input variables
DECLARE @fiscalYearStartingMonth TINYINT = 7;
DECLARE @weekStartDay VARCHAR(20) = 'Sunday';


--Internal Variables
DECLARE @weekStartDayNumberValue TINYINT = CASE @weekStartDay WHEN 'Sunday'    THEN 1
                                                              WHEN 'Monday'    THEN 2
                                                              WHEN 'Tuesday'   THEN 3
                                                              WHEN 'Wednesday' THEN 4
                                                              WHEN 'Thursday'  THEN 5
                                                              WHEN 'Friday'    THEN 6
                                                              WHEN 'Saturday'  THEN 7
                                           END;

DECLARE @currentYear INT = DATEPART(YEAR, GETDATE());
DECLARE @recursiveWeekStartDate DATE = DATEFROMPARTS(@currentYear,@fiscalYearStartingMonth,1);
DECLARE @recursiveWeekEndDate DATE = DATEFROMPARTS(@currentYear,12,31);

--Determine where the start of the week falls
--If it matches with our desired pattern, no need to worry
--If it does not match, explicitly adjust the start date
IF (DATEPART(DW,@recursiveWeekStartDate) != @weekStartDayNumberValue)
BEGIN
    SET @recursiveWeekStartDate = DATEADD(DAY,(@weekStartDayNumberValue - DATEPART(DW,@recursiveWeekStartDate)),@recursiveWeekStartDate)
END

--Now generate the pattern as requested
;WITH sqlTwinsWeekPatternGenerator (RelativeWeekNumber, WeekStartDate, WeekEndDate)
AS (--Anchor Member
    SELECT 1 AS RelativeWeekNumber,
           @recursiveWeekStartDate AS WeekStartDate,
           DATEADD(DAY, 6, @recursiveWeekStartDate)  AS WeekEndDate
    UNION ALL
    --Recursive Member
    SELECT (wpg.RelativeWeekNumber + 1) AS RelativeWeekNumber,
           DATEADD(DAY,7,wpg.WeekStartDate) AS WeekStartDate,
           DATEADD(DAY,6,DATEADD(DAY,7,wpg.WeekStartDate)) AS WeekEndDate
    FROM sqlTwinsWeekPatternGenerator AS wpg
    WHERE wpg.WeekStartDate < DATEADD(DAY,-6,@recursiveWeekEndDate)
  )
SELECT wpgCTE.RelativeWeekNumber,
       wpgCTE.WeekStartDate,
       wpgCTE.WeekEndDate
FROM sqlTwinsWeekPatternGenerator AS wpgCTE;
GO

/*************************************
RESULTS
=======
RelativeWeekNumber WeekStartDate WeekEndDate
------------------ ------------- -----------
1                  2017-06-25    2017-07-01
2                  2017-07-02    2017-07-08
3                  2017-07-09    2017-07-15
4                  2017-07-16    2017-07-22
5                  2017-07-23    2017-07-29
6                  2017-07-30    2017-08-05
7                  2017-08-06    2017-08-12
8                  2017-08-13    2017-08-19
9                  2017-08-20    2017-08-26
10                 2017-08-27    2017-09-02
11                 2017-09-03    2017-09-09
12                 2017-09-10    2017-09-16
13                 2017-09-17    2017-09-23
14                 2017-09-24    2017-09-30
15                 2017-10-01    2017-10-07
16                 2017-10-08    2017-10-14
17                 2017-10-15    2017-10-21
18                 2017-10-22    2017-10-28
19                 2017-10-29    2017-11-04
20                 2017-11-05    2017-11-11
21                 2017-11-12    2017-11-18
22                 2017-11-19    2017-11-25
23                 2017-11-26    2017-12-02
24                 2017-12-03    2017-12-09
25                 2017-12-10    2017-12-16
26                 2017-12-17    2017-12-23
27                 2017-12-24    2017-12-30
28                 2017-12-31    2018-01-06
*/

Open in new window

Avatar of Manju

ASKER

Unfortunately, the system i have now is 2008 R2 and DATEFROMPARTS wont work here to test.
Ok, added SQL Server 2008 to the question area so that experts are aware about the impacted system version. I am setting out for lunch, but will revert back with alternatives once I am back.
Here's the SQL 2008 R2 way (basically, used simple string concatenation instead of DATEFROMPARTS). Also, I ensured that all internal calculations are based on the fact that Sunday is the first day of the week (Default SQL Server behaviour).

USE tempdb;
GO

--Your input variables
DECLARE @fiscalYearStartingMonth TINYINT = 7;
DECLARE @weekStartDay VARCHAR(20) = 'Sunday';


--Internal Variables
--All our calculations are based on the fact that Sunday is the first day of the week (Default SQL Server behaviour)
--Just ensuring that this is the case wherever this logic is used
SET DATEFIRST 7;

DECLARE @weekStartDayNumberValue TINYINT = CASE @weekStartDay WHEN 'Sunday'    THEN 1
                                                              WHEN 'Monday'    THEN 2
                                                              WHEN 'Tuesday'   THEN 3
                                                              WHEN 'Wednesday' THEN 4
                                                              WHEN 'Thursday'  THEN 5
                                                              WHEN 'Friday'    THEN 6
                                                              WHEN 'Saturday'  THEN 7
                                           END;

DECLARE @currentYear INT = DATEPART(YEAR, GETDATE());
DECLARE @recursiveWeekStartDate DATE;
DECLARE @recursiveWeekEndDate DATE;

SELECT @recursiveWeekStartDate = CAST(@currentYear AS CHAR(4)) + '-' + CAST(@fiscalYearStartingMonth AS CHAR(2)) + '-01';
SELECT @recursiveWeekEndDate = CAST(@currentYear AS CHAR(4)) + '-12-31';


--Determine where the start of the week falls
--If it matches with our desired pattern, no need to worry
--If it does not match, explicitly adjust the start date
IF (DATEPART(DW,@recursiveWeekStartDate) != @weekStartDayNumberValue)
BEGIN
    SET @recursiveWeekStartDate = DATEADD(DAY,(@weekStartDayNumberValue - DATEPART(DW,@recursiveWeekStartDate)),@recursiveWeekStartDate)
END

--Now generate the pattern as requested
;WITH sqlTwinsWeekPatternGenerator (RelativeWeekNumber, WeekStartDate, WeekEndDate)
AS (--Anchor Member
    SELECT 1 AS RelativeWeekNumber,
           @recursiveWeekStartDate AS WeekStartDate,
           DATEADD(DAY, 6, @recursiveWeekStartDate)  AS WeekEndDate
    UNION ALL
    --Recursive Member
    SELECT (wpg.RelativeWeekNumber + 1) AS RelativeWeekNumber,
           DATEADD(DAY,7,wpg.WeekStartDate) AS WeekStartDate,
           DATEADD(DAY,6,DATEADD(DAY,7,wpg.WeekStartDate)) AS WeekEndDate
    FROM sqlTwinsWeekPatternGenerator AS wpg
    WHERE wpg.WeekStartDate < DATEADD(DAY,-6,@recursiveWeekEndDate)
  )
SELECT wpgCTE.RelativeWeekNumber,
       wpgCTE.WeekStartDate,
       wpgCTE.WeekEndDate
FROM sqlTwinsWeekPatternGenerator AS wpgCTE;
GO

/*************************************
RESULTS
=======
RelativeWeekNumber WeekStartDate WeekEndDate
------------------ ------------- -----------
1                  2017-06-25    2017-07-01
2                  2017-07-02    2017-07-08
3                  2017-07-09    2017-07-15
4                  2017-07-16    2017-07-22
5                  2017-07-23    2017-07-29
6                  2017-07-30    2017-08-05
7                  2017-08-06    2017-08-12
8                  2017-08-13    2017-08-19
9                  2017-08-20    2017-08-26
10                 2017-08-27    2017-09-02
11                 2017-09-03    2017-09-09
12                 2017-09-10    2017-09-16
13                 2017-09-17    2017-09-23
14                 2017-09-24    2017-09-30
15                 2017-10-01    2017-10-07
16                 2017-10-08    2017-10-14
17                 2017-10-15    2017-10-21
18                 2017-10-22    2017-10-28
19                 2017-10-29    2017-11-04
20                 2017-11-05    2017-11-11
21                 2017-11-12    2017-11-18
22                 2017-11-19    2017-11-25
23                 2017-11-26    2017-12-02
24                 2017-12-03    2017-12-09
25                 2017-12-10    2017-12-16
26                 2017-12-17    2017-12-23
27                 2017-12-24    2017-12-30
28                 2017-12-31    2018-01-06
*/

Open in new window

Avatar of Manju

ASKER

@Nakul - Per the above query,

Relativeweeknumber is 1 for Weekstartdate(2017-06-25) and Weekenddate(2017-07-01). However it should be WK52 / 53 for previous year. and 2nd July should be wk1.
That was the assumption I had called out, and in the absence of the accurate requirement was one that I had to take.

With the requirement now defined, here's the updated code. You can toggle between the two assumptions to fine tune the same.

USE tempdb;
GO

--Your input variables
DECLARE @fiscalYearStartingMonth TINYINT = 7;
DECLARE @weekStartDay VARCHAR(20) = 'Sunday';


--Internal Variables
--All our calculations are based on the fact that Sunday is the first day of the week (Default SQL Server behaviour)
--Just ensuring that this is the case wherever this logic is used
SET DATEFIRST 7;

DECLARE @weekStartDayNumberValue TINYINT = CASE @weekStartDay WHEN 'Sunday'    THEN 1
                                                              WHEN 'Monday'    THEN 2
                                                              WHEN 'Tuesday'   THEN 3
                                                              WHEN 'Wednesday' THEN 4
                                                              WHEN 'Thursday'  THEN 5
                                                              WHEN 'Friday'    THEN 6
                                                              WHEN 'Saturday'  THEN 7
                                           END;

DECLARE @currentYear INT = DATEPART(YEAR, GETDATE());
--SQL 2012 way
/*
DECLARE @recursiveWeekStartDate DATE = DATEFROMPARTS(@currentYear,@fiscalYearStartingMonth,1);
DECLARE @recursiveWeekEndDate DATE = DATEFROMPARTS(@currentYear,12,31);
*/

--SQL 2008 R2 way
DECLARE @recursiveWeekStartDate DATE;
DECLARE @recursiveWeekEndDate DATE;

SELECT @recursiveWeekStartDate = CAST(@currentYear AS CHAR(4)) + '-' + CAST(@fiscalYearStartingMonth AS CHAR(2)) + '-01';
SELECT @recursiveWeekEndDate = CAST(@currentYear AS CHAR(4)) + '-12-31';

--Determine where the start of the week falls
--If it matches with our desired pattern, no need to worry
--If it does not match, explicitly adjust the start date

----ASSUMPTION: CASE 01: Week starts on/before the week start date
--IF (DATEPART(DW,@recursiveWeekStartDate) != @weekStartDayNumberValue)
--BEGIN
--    SET @recursiveWeekStartDate = DATEADD(DAY,(@weekStartDayNumberValue - DATEPART(DW,@recursiveWeekStartDate)),@recursiveWeekStartDate)
--END

--ASSUMPTION: CASE 02: Week starts on/after the week start date
IF (DATEPART(DW,@recursiveWeekStartDate) != @weekStartDayNumberValue)
BEGIN
    SET @recursiveWeekStartDate = DATEADD(DAY,(8 - DATEPART(DW,@recursiveWeekStartDate)),@recursiveWeekStartDate)
END

--Now generate the pattern as requested
;WITH sqlTwinsWeekPatternGenerator (RelativeWeekNumber, WeekStartDate, WeekEndDate)
AS (--Anchor Member
    SELECT 1 AS RelativeWeekNumber,
           @recursiveWeekStartDate AS WeekStartDate,
           DATEADD(DAY, 6, @recursiveWeekStartDate)  AS WeekEndDate
    UNION ALL
    --Recursive Member
    SELECT (wpg.RelativeWeekNumber + 1) AS RelativeWeekNumber,
           DATEADD(DAY,7,wpg.WeekStartDate) AS WeekStartDate,
           DATEADD(DAY,6,DATEADD(DAY,7,wpg.WeekStartDate)) AS WeekEndDate
    FROM sqlTwinsWeekPatternGenerator AS wpg
    WHERE wpg.WeekStartDate < DATEADD(DAY,-6,@recursiveWeekEndDate)
  )
SELECT wpgCTE.RelativeWeekNumber,
       wpgCTE.WeekStartDate,
       wpgCTE.WeekEndDate
FROM sqlTwinsWeekPatternGenerator AS wpgCTE;
GO

/*************************************
RESULTS (ASSUMPTION, CASE 02)
==============================
RelativeWeekNumber WeekStartDate WeekEndDate
------------------ ------------- -----------
1                  2017-07-02    2017-07-08
2                  2017-07-09    2017-07-15
3                  2017-07-16    2017-07-22
4                  2017-07-23    2017-07-29
5                  2017-07-30    2017-08-05
6                  2017-08-06    2017-08-12
7                  2017-08-13    2017-08-19
8                  2017-08-20    2017-08-26
9                  2017-08-27    2017-09-02
10                 2017-09-03    2017-09-09
11                 2017-09-10    2017-09-16
12                 2017-09-17    2017-09-23
13                 2017-09-24    2017-09-30
14                 2017-10-01    2017-10-07
15                 2017-10-08    2017-10-14
16                 2017-10-15    2017-10-21
17                 2017-10-22    2017-10-28
18                 2017-10-29    2017-11-04
19                 2017-11-05    2017-11-11
20                 2017-11-12    2017-11-18
21                 2017-11-19    2017-11-25
22                 2017-11-26    2017-12-02
23                 2017-12-03    2017-12-09
24                 2017-12-10    2017-12-16
25                 2017-12-17    2017-12-23
26                 2017-12-24    2017-12-30
27                 2017-12-31    2018-01-06
*/

Open in new window

Avatar of Manju

ASKER

Perfect.
Avatar of Manju

ASKER

@Nakul - How do i loop the @currentyear for all the years in table ?
Avatar of Manju

ASKER

Ex: Select distinct year(fiscaldate) from tblname. the above sp needs to give me the data for all those years in that query
Hello!

In the sample below, I have used a table variable (@yearTable) to achieve the same outcome. Also, used the option MAXRECURSION to allow us to iterate through the CTE for more than 100 times.

USE tempdb;
GO

--Your input variables
DECLARE @fiscalYearStartingMonth TINYINT = 7;
DECLARE @weekStartDay VARCHAR(20) = 'Sunday';

DECLARE @yearTable TABLE (yearValue INT);

INSERT INTO @yearTable (yearValue)
VALUES (2017),
       (2018),
       (2019),
       (2020);

--Internal Variables
--All our calculations are based on the fact that Sunday is the first day of the week (Default SQL Server behaviour)
--Just ensuring that this is the case wherever this logic is used
SET DATEFIRST 7;

DECLARE @weekStartDayNumberValue TINYINT = CASE @weekStartDay WHEN 'Sunday'    THEN 1
                                                              WHEN 'Monday'    THEN 2
                                                              WHEN 'Tuesday'   THEN 3
                                                              WHEN 'Wednesday' THEN 4
                                                              WHEN 'Thursday'  THEN 5
                                                              WHEN 'Friday'    THEN 6
                                                              WHEN 'Saturday'  THEN 7
                                           END;

DECLARE @currentYear INT = DATEPART(YEAR, GETDATE());
--SQL 2012 way
/*
DECLARE @recursiveWeekStartDate DATE = DATEFROMPARTS(@currentYear,@fiscalYearStartingMonth,1);
DECLARE @recursiveWeekEndDate DATE = DATEFROMPARTS(@currentYear,12,31);
*/

--SQL 2008 R2 way
DECLARE @recursiveWeekStartDate DATE;
DECLARE @recursiveWeekEndDate DATE;

SELECT @recursiveWeekStartDate = CAST(@currentYear AS CHAR(4)) + '-' + CAST(@fiscalYearStartingMonth AS CHAR(2)) + '-01';
--Ending in the same year
--SELECT @recursiveWeekEndDate = CAST(@currentYear AS CHAR(4)) + '-12-31';

--Ending in the year from another table
SELECT @recursiveWeekEndDate = CAST(MAX(DISTINCT yt.yearValue) AS CHAR(4)) + '-12-31' FROM @yearTable AS yt;

--Determine where the start of the week falls
--If it matches with our desired pattern, no need to worry
--If it does not match, explicitly adjust the start date

----ASSUMPTION: CASE 01: Week starts on/before the week start date
--IF (DATEPART(DW,@recursiveWeekStartDate) != @weekStartDayNumberValue)
--BEGIN
--    SET @recursiveWeekStartDate = DATEADD(DAY,(@weekStartDayNumberValue - DATEPART(DW,@recursiveWeekStartDate)),@recursiveWeekStartDate)
--END

--ASSUMPTION: CASE 02: Week starts on/after the week start date
IF (DATEPART(DW,@recursiveWeekStartDate) != @weekStartDayNumberValue)
BEGIN
    SET @recursiveWeekStartDate = DATEADD(DAY,(8 - DATEPART(DW,@recursiveWeekStartDate)),@recursiveWeekStartDate)
END

--Now generate the pattern as requested
;WITH sqlTwinsWeekPatternGenerator (RelativeWeekNumber, WeekStartDate, WeekEndDate)
AS (--Anchor Member
    SELECT 1 AS RelativeWeekNumber,
           @recursiveWeekStartDate AS WeekStartDate,
           DATEADD(DAY, 6, @recursiveWeekStartDate)  AS WeekEndDate
    UNION ALL
    --Recursive Member
    SELECT (wpg.RelativeWeekNumber + 1) AS RelativeWeekNumber,
           DATEADD(DAY,7,wpg.WeekStartDate) AS WeekStartDate,
           DATEADD(DAY,6,DATEADD(DAY,7,wpg.WeekStartDate)) AS WeekEndDate
    FROM sqlTwinsWeekPatternGenerator AS wpg
    WHERE wpg.WeekStartDate < DATEADD(DAY,-6,@recursiveWeekEndDate)
  )
SELECT wpgCTE.RelativeWeekNumber,
       wpgCTE.WeekStartDate,
       wpgCTE.WeekEndDate
FROM sqlTwinsWeekPatternGenerator AS wpgCTE
OPTION (MAXRECURSION 0);
GO

/*************************************
RESULTS (ASSUMPTION, CASE 02)
==============================
RelativeWeekNumber WeekStartDate WeekEndDate
------------------ ------------- -----------
1                  2017-07-02    2017-07-08
2                  2017-07-09    2017-07-15
3                  2017-07-16    2017-07-22
4                  2017-07-23    2017-07-29
5                  2017-07-30    2017-08-05
6                  2017-08-06    2017-08-12
7                  2017-08-13    2017-08-19
8                  2017-08-20    2017-08-26
9                  2017-08-27    2017-09-02
10                 2017-09-03    2017-09-09
11                 2017-09-10    2017-09-16
12                 2017-09-17    2017-09-23
13                 2017-09-24    2017-09-30
14                 2017-10-01    2017-10-07
15                 2017-10-08    2017-10-14
16                 2017-10-15    2017-10-21
17                 2017-10-22    2017-10-28
18                 2017-10-29    2017-11-04
19                 2017-11-05    2017-11-11
20                 2017-11-12    2017-11-18
21                 2017-11-19    2017-11-25
22                 2017-11-26    2017-12-02
23                 2017-12-03    2017-12-09
24                 2017-12-10    2017-12-16
25                 2017-12-17    2017-12-23
26                 2017-12-24    2017-12-30
27                 2017-12-31    2018-01-06
28                 2018-01-07    2018-01-13
29                 2018-01-14    2018-01-20
30                 2018-01-21    2018-01-27
31                 2018-01-28    2018-02-03
32                 2018-02-04    2018-02-10
33                 2018-02-11    2018-02-17
34                 2018-02-18    2018-02-24
35                 2018-02-25    2018-03-03
36                 2018-03-04    2018-03-10
37                 2018-03-11    2018-03-17
38                 2018-03-18    2018-03-24
39                 2018-03-25    2018-03-31
40                 2018-04-01    2018-04-07
41                 2018-04-08    2018-04-14
42                 2018-04-15    2018-04-21
43                 2018-04-22    2018-04-28
44                 2018-04-29    2018-05-05
45                 2018-05-06    2018-05-12
46                 2018-05-13    2018-05-19
47                 2018-05-20    2018-05-26
48                 2018-05-27    2018-06-02
49                 2018-06-03    2018-06-09
50                 2018-06-10    2018-06-16
51                 2018-06-17    2018-06-23
52                 2018-06-24    2018-06-30
53                 2018-07-01    2018-07-07
54                 2018-07-08    2018-07-14
55                 2018-07-15    2018-07-21
56                 2018-07-22    2018-07-28
57                 2018-07-29    2018-08-04
58                 2018-08-05    2018-08-11
59                 2018-08-12    2018-08-18
60                 2018-08-19    2018-08-25
61                 2018-08-26    2018-09-01
62                 2018-09-02    2018-09-08
63                 2018-09-09    2018-09-15
64                 2018-09-16    2018-09-22
65                 2018-09-23    2018-09-29
66                 2018-09-30    2018-10-06
67                 2018-10-07    2018-10-13
68                 2018-10-14    2018-10-20
69                 2018-10-21    2018-10-27
70                 2018-10-28    2018-11-03
71                 2018-11-04    2018-11-10
72                 2018-11-11    2018-11-17
73                 2018-11-18    2018-11-24
74                 2018-11-25    2018-12-01
75                 2018-12-02    2018-12-08
76                 2018-12-09    2018-12-15
77                 2018-12-16    2018-12-22
78                 2018-12-23    2018-12-29
79                 2018-12-30    2019-01-05
80                 2019-01-06    2019-01-12
81                 2019-01-13    2019-01-19
82                 2019-01-20    2019-01-26
83                 2019-01-27    2019-02-02
84                 2019-02-03    2019-02-09
85                 2019-02-10    2019-02-16
86                 2019-02-17    2019-02-23
87                 2019-02-24    2019-03-02
88                 2019-03-03    2019-03-09
89                 2019-03-10    2019-03-16
90                 2019-03-17    2019-03-23
91                 2019-03-24    2019-03-30
92                 2019-03-31    2019-04-06
93                 2019-04-07    2019-04-13
94                 2019-04-14    2019-04-20
95                 2019-04-21    2019-04-27
96                 2019-04-28    2019-05-04
97                 2019-05-05    2019-05-11
98                 2019-05-12    2019-05-18
99                 2019-05-19    2019-05-25
100                2019-05-26    2019-06-01
101                2019-06-02    2019-06-08
102                2019-06-09    2019-06-15
103                2019-06-16    2019-06-22
104                2019-06-23    2019-06-29
105                2019-06-30    2019-07-06
106                2019-07-07    2019-07-13
107                2019-07-14    2019-07-20
108                2019-07-21    2019-07-27
109                2019-07-28    2019-08-03
110                2019-08-04    2019-08-10
111                2019-08-11    2019-08-17
112                2019-08-18    2019-08-24
113                2019-08-25    2019-08-31
114                2019-09-01    2019-09-07
115                2019-09-08    2019-09-14
116                2019-09-15    2019-09-21
117                2019-09-22    2019-09-28
118                2019-09-29    2019-10-05
119                2019-10-06    2019-10-12
120                2019-10-13    2019-10-19
121                2019-10-20    2019-10-26
122                2019-10-27    2019-11-02
123                2019-11-03    2019-11-09
124                2019-11-10    2019-11-16
125                2019-11-17    2019-11-23
126                2019-11-24    2019-11-30
127                2019-12-01    2019-12-07
128                2019-12-08    2019-12-14
129                2019-12-15    2019-12-21
130                2019-12-22    2019-12-28
131                2019-12-29    2020-01-04
132                2020-01-05    2020-01-11
133                2020-01-12    2020-01-18
134                2020-01-19    2020-01-25
135                2020-01-26    2020-02-01
136                2020-02-02    2020-02-08
137                2020-02-09    2020-02-15
138                2020-02-16    2020-02-22
139                2020-02-23    2020-02-29
140                2020-03-01    2020-03-07
141                2020-03-08    2020-03-14
142                2020-03-15    2020-03-21
143                2020-03-22    2020-03-28
144                2020-03-29    2020-04-04
145                2020-04-05    2020-04-11
146                2020-04-12    2020-04-18
147                2020-04-19    2020-04-25
148                2020-04-26    2020-05-02
149                2020-05-03    2020-05-09
150                2020-05-10    2020-05-16
151                2020-05-17    2020-05-23
152                2020-05-24    2020-05-30
153                2020-05-31    2020-06-06
154                2020-06-07    2020-06-13
155                2020-06-14    2020-06-20
156                2020-06-21    2020-06-27
157                2020-06-28    2020-07-04
158                2020-07-05    2020-07-11
159                2020-07-12    2020-07-18
160                2020-07-19    2020-07-25
161                2020-07-26    2020-08-01
162                2020-08-02    2020-08-08
163                2020-08-09    2020-08-15
164                2020-08-16    2020-08-22
165                2020-08-23    2020-08-29
166                2020-08-30    2020-09-05
167                2020-09-06    2020-09-12
168                2020-09-13    2020-09-19
169                2020-09-20    2020-09-26
170                2020-09-27    2020-10-03
171                2020-10-04    2020-10-10
172                2020-10-11    2020-10-17
173                2020-10-18    2020-10-24
174                2020-10-25    2020-10-31
175                2020-11-01    2020-11-07
176                2020-11-08    2020-11-14
177                2020-11-15    2020-11-21
178                2020-11-22    2020-11-28
179                2020-11-29    2020-12-05
180                2020-12-06    2020-12-12
181                2020-12-13    2020-12-19
182                2020-12-20    2020-12-26
183                2020-12-27    2021-01-02
*/

Open in new window

ASKER CERTIFIED SOLUTION
Avatar of Nakul Vachhrajani
Nakul Vachhrajani
Flag of India image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Avatar of Manju

ASKER

Yes, but this is increasing the week numbers continuously. However Every year should have only 52/53 weeks.
That's a simple one - I have an updated solution in ID: 42382745.

The week-number can be adjusted by working  with the modulo (%) in the final SELECT. My solution is just a prototype :)
Avatar of Manju

ASKER

Thank you