Try:
DECLARE @t TABLE ([Day] INT, [Value] INT)
INSERT INTO @t VALUES(381, 10)
INSERT INTO @t VALUES(382, 60)
INSERT INTO @t VALUES(383, 25)
INSERT INTO @t VALUES(384, 46)
INSERT INTO @t VALUES(385, 67)
INSERT INTO @t VALUES(386, 81)
INSERT INTO @t VALUES(387, 12)
INSERT INTO @t VALUES(388, 45)
INSERT INTO @t VALUES(389, 24)
INSERT INTO @t VALUES(390, 87)
INSERT INTO @t VALUES(391, 100)
INSERT INTO @t VALUES(392, 29)
INSERT INTO @t VALUES(393, 55)
INSERT INTO @t VALUES(394, 45)
;WITH cte
AS
(
SELECT
[Day],
[Value],
(((row_number() OVER(ORDER BY [Day] ASC)) - 1) / 7) + 1 AS grp
FROM @t
)
SELECT grp, MAX([Value]) AS max_grp_Value
FROM cte
GROUP BY grp
go
AMB
[quoted text, click to view] "aquagal" wrote:
> Thanks Alenjandro.
> But this doesnt work if my day values are in 100s or 1000s e.g
> 381,382,283,384 etc.I dont get output as 1,2,3 for Grp.
> Also,it gets divided into group of 3 when it should be divided in only
> 2 groups(14 days/7=2 weeks)
> Please see the following code that I ran
>
> DECLARE @t TABLE ([Day] INT, [Value] INT)
>
>
> INSERT INTO @t VALUES(381, 10)
> INSERT INTO @t VALUES(382, 60)
> INSERT INTO @t VALUES(383, 25)
> INSERT INTO @t VALUES(384, 46)
> INSERT INTO @t VALUES(385, 67)
> INSERT INTO @t VALUES(386, 81)
> INSERT INTO @t VALUES(387, 12)
> INSERT INTO @t VALUES(388, 45)
> INSERT INTO @t VALUES(389, 24)
> INSERT INTO @t VALUES(390, 87)
> INSERT INTO @t VALUES(391, 100)
> INSERT INTO @t VALUES(392, 29)
> INSERT INTO @t VALUES(393, 55)
> INSERT INTO @t VALUES(394, 45)
>
>
> SELECT (([Day] - 1) / 7) + 1 AS grp, MAX([Value]) AS max_grp_Value
> FROM @t
> GROUP BY (([Day] - 1) / 7) + 1
> go
>
> ---------OUTPUT------------
> grp max_grp_Value
> 55 67
> 56 100
> 57 55
>
> Thanks.
>