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]