Home > Enterprise >  sql as i required want to calc week based on date of each month 1st day and also want week start and
sql as i required want to calc week based on date of each month 1st day and also want week start and

Time:02-22

sql i want to calc. week based on each month 1st day. and also date week start and week end date

date            week
1/1/2022 0:00   1
1/2/2022 0:00   1
1/3/2022 0:00   2
1/4/2022 0:00   2
1/5/2022 0:00   2
1/6/2022 0:00   2
1/8/2022 0:00   2
1/9/2022 0:00   2
1/10/2022 0:00  3
1/11/2022 0:00  3
1/12/2022 0:00  3
1/13/2022 0:00  3
1/15/2022 0:00  3
1/16/2022 0:00  3
1/17/2022 0:00  4
1/18/2022 0:00  4
1/19/2022 0:00  4
1/20/2022 0:00  4
1/22/2022 0:00  4
1/23/2022 0:00  4
1/24/2022 0:00  5
1/25/2022 0:00  5
1/26/2022 0:00  5
1/27/2022 0:00  5
1/29/2022 0:00  5
1/30/2022 0:00  5
1/31/2022 0:00  6
2/1/2022 0:00   1
2/2/2022 0:00   1
2/3/2022 0:00   1
2/5/2022 0:00   1
2/6/2022 0:00   1
2/7/2022 0:00   2
2/8/2022 0:00   2
2/9/2022 0:00   2
2/10/2022 0:00  2
2/12/2022 0:00  2
2/13/2022 0:00  2
2/14/2022 0:00  3
2/15/2022 0:00  3
2/16/2022 0:00  3
2/17/2022 0:00  3
2/19/2022 0:00  3
2/20/2022 0:00  3

also attached below expected data required based on date week calc. and week start date and end date
date           week week start date week end date
1/1/2022 0:00   1   1/1/2022 0:00   1/2/2022 0:00
1/2/2022 0:00   1   1/1/2022 0:00   1/2/2022 0:00
1/3/2022 0:00   2   1/3/2022 0:00   1/9/2022 0:00
1/4/2022 0:00   2   1/3/2022 0:00   1/9/2022 0:00
1/5/2022 0:00   2   1/3/2022 0:00   1/9/2022 0:00
1/6/2022 0:00   2   1/3/2022 0:00   1/9/2022 0:00
1/8/2022 0:00   2   1/3/2022 0:00   1/9/2022 0:00
1/9/2022 0:00   2   1/3/2022 0:00   1/9/2022 0:00
1/10/2022 0:00  3   1/10/2022 0:00  1/16/2022 0:00
1/11/2022 0:00  3   1/10/2022 0:00  1/16/2022 0:00
1/12/2022 0:00  3   1/10/2022 0:00  1/16/2022 0:00
1/13/2022 0:00  3   1/10/2022 0:00  1/16/2022 0:00
1/15/2022 0:00  3   1/10/2022 0:00  1/16/2022 0:00
1/16/2022 0:00  3   1/10/2022 0:00  1/16/2022 0:00
1/17/2022 0:00  4   1/17/2022 0:00  1/23/2022 0:00
1/18/2022 0:00  4   1/17/2022 0:00  1/23/2022 0:00
1/19/2022 0:00  4   1/17/2022 0:00  1/23/2022 0:00
1/20/2022 0:00  4   1/17/2022 0:00  1/23/2022 0:00
1/22/2022 0:00  4   1/17/2022 0:00  1/23/2022 0:00
1/23/2022 0:00  4   1/17/2022 0:00  1/23/2022 0:00
1/24/2022 0:00  5   1/24/2022 0:00  1/30/2022 0:00
1/25/2022 0:00  5   1/24/2022 0:00  1/30/2022 0:00
1/26/2022 0:00  5   1/24/2022 0:00  1/30/2022 0:00
1/27/2022 0:00  5   1/24/2022 0:00  1/30/2022 0:00
1/29/2022 0:00  5   1/24/2022 0:00  1/30/2022 0:00
1/30/2022 0:00  5   1/24/2022 0:00  1/30/2022 0:00
1/31/2022 0:00  6   1/31/2022 0:00  1/31/2022 0:00
2/1/2022 0:00   1   2/1/2022 0:00   2/6/2022 0:00
2/2/2022 0:00   1   2/1/2022 0:00   2/6/2022 0:00
2/3/2022 0:00   1   2/1/2022 0:00   2/6/2022 0:00
2/5/2022 0:00   1   2/1/2022 0:00   2/6/2022 0:00
2/6/2022 0:00   1   2/1/2022 0:00   2/6/2022 0:00
2/7/2022 0:00   2   2/7/2022 0:00   2/13/2022 0:00
2/8/2022 0:00   2   2/7/2022 0:00   2/13/2022 0:00
2/9/2022 0:00   2   2/7/2022 0:00   2/13/2022 0:00
2/10/2022 0:00  2   2/7/2022 0:00   2/13/2022 0:00
2/12/2022 0:00  2   2/7/2022 0:00   2/13/2022 0:00
2/13/2022 0:00  2   2/7/2022 0:00   2/13/2022 0:00
2/14/2022 0:00  3   2/14/2022 0:00  2/20/2022 0:00
2/15/2022 0:00  3   2/14/2022 0:00  2/20/2022 0:00
2/16/2022 0:00  3   2/14/2022 0:00  2/20/2022 0:00
2/17/2022 0:00  3   2/14/2022 0:00  2/20/2022 0:00
2/19/2022 0:00  3   2/14/2022 0:00  2/20/2022 0:00
2/20/2022 0:00  3   2/14/2022 0:00  2/20/2022 0:00

CodePudding user response:

Try this:

SELECT tb.[Group By],
       tb.[Date Range],
       a.[First Date],
       a.[Last Date]
From tb
left join (
            SELECT [Group By],
                   min([Date Range])as [First Date] ,
                   max([Date Range]) as [Last Date]
            FROM tb
            group by [Group By])a
On tb.[Group By] = a.[Group By];

CodePudding user response:

SELECT 
    [date],
    [week],
    MIN([date]) OVER(PARTITION BY MONTH(date), [week]) as [week start date],
    MAX([date]) OVER(PARTITION BY MONTH(date), [week]) as [week end date]
FROM myTable
    ORDER BY [date], [week]
  • Related