>DECLARE @TestTable TABLE >( TrafficDate Date, > P01 INT, P02 INT, P03 INT, P04 INT, P05 INT, P06 INT, P07 INT, P08 INT, > P09 INT, P10 INT, P11 INT, P12 INT, P13 INT, P14 INT, P15 INT, P16 INT) > >INSERT INTO @TestTable values > ('1/1/2014', 1, 5, 4, 1, 8, 2, 1, 3, 1, 9, 7, 4, 5, 1, 2, 9) , > ('1/2/2014', 9, 1 , 4, 6, 8, 5, 4, 1, 2, 2, 1, 8, 6, 4, 3, 5) , > ('1/3/2014', 5, 4, 3, 6, 1, 8, 2, 9, 9, 1, 5, 6, 7, 7, 7, 1) > > >DECLARE @RunFordate date = '1-2-2014' >DECLARE @NumBuckets int = 16 > > ;with UnPivotedCTE as > ( select TrafficDate, TimeSegment, TrafficCount > from (select * from @TestTable WHERE TrafficDate = @RunFordate) Temp > unpivot ( TrafficCount for TimeSegment in ( P01, P02, P03, P04, P05, P06, P07, P08, > P09, P10, P11, P12, P13, P14, P15, P16) ) T ) , > > AnchorCTE as (select 1 as Bucket, TrafficCount, row_number() over (order by TimeSegment) as RowNum > FROM UnPivotedCTE where TimeSegment between 'P01' AND 'P04' > UNION ALL > SELECT Bucket + 1 as Bucket, UnpivotedCTE.TrafficCount, row_number() over (order by TimeSegment) as RowNum > FROM UnPivotedCTE, AnchorCTE > WHERE RowNum = 1 and Bucket <= @NumBuckets - 4 > and TimeSegment between 'P' + right('0' + cast(Bucket + 1 as varchar(2)) ,2) > and 'P' + right('0' + cast(Bucket + 4 as varchar(2)),2) ) , > > RankCTE as ( select Bucket, sum(TrafficCount) as SumTrafficCount, > RANK() OVER (ORDER BY SUM(TrafficCount) desc) AS GroupRank FROM AnchorCTE GROUP BY Bucket ) > > >SELECT DATEADD( MINUTE, 15 * Bucket, cast(@RunFordate as datetime)) AS TimeStart, Bucket, SumTrafficCount > from RankCTE where GroupRank = 1 > >This, and the other solutions, looks like pure gobble-degook to me (based on the fact that anything beyond a simple join is beyond me :-} )