|
DP978
Constraint Violating Yak Guru
269 Posts |
Posted - 2009-12-01 : 13:29:46
|
| EDIT: Note this is not Dynamic, but that concept is certainly not a 'Simple' exampleCreate TABLE #scores(Grp Nvarchar(1), ID TINYINT,Score TINYINT )INSERT #scoresSELECT 'A', 1, 70 UNION ALLSELECT 'A', 2, 77 UNION ALLSELECT 'A', 7, 85 UNION ALLSELECT 'B', 10, 95 UNION ALLSELECT 'B', 11, 85 UNION ALLSELECT 'C', 15, 77 UNION ALLSELECT 'B', 18, 55 UNION ALLSELECT 'B', 26, 98 UNION ALLSELECT 'A', 90, 91select grp, AVG(score) from #scores group by grpSELECT p.*FROM ( SELECT Grp, 'Avg_Score' as name, Score FROM #scores ) AS sPIVOT ( AVG(s.Score) FOR s.grp IN ([A], [B], [C]) ) AS p---------------------------------------------(note you will have to drop the first table is you plan to execute this entire bit...or just go from the select grp part down...)To see a partition of the same data set...Create TABLE #scores(Grp Nvarchar(1), ID TINYINT,Score TINYINT )INSERT #scoresSELECT 'A', 1, 70 UNION ALLSELECT 'A', 2, 77 UNION ALLSELECT 'A', 7, 85 UNION ALLSELECT 'B', 10, 95 UNION ALLSELECT 'B', 11, 85 UNION ALLSELECT 'C', 15, 77 UNION ALLSELECT 'B', 18, 55 UNION ALLSELECT 'B', 26, 98 UNION ALLSELECT 'A', 90, 91Select Grp, ID, Score, ROW_NUMBER() OVER (PARTITION by Grp Order by Score desc) as Row_Num, RANK() OVER (PARTITION by Grp Order by Score desc) as Rank, DENSE_RANK() OVER (PARTITION by Grp Order by Score desc) as Dense_RankFrom #scores |
 |
|