Monday, 20 July 2009

Group by and Distinct with Ranking Functions

DECLARE @tbl_Groupby TABLE(RevisionID INT ,RevisionNumber VARCHAR(100))

INSERT INTO @tbl_Groupby(RevisionID,RevisionNumber ) VALUES (0,'0')
INSERT INTO @tbl_Groupby(RevisionID,RevisionNumber ) VALUES (0,'0')
INSERT INTO @tbl_Groupby(RevisionID,RevisionNumber ) VALUES (1,'1')
INSERT INTO @tbl_Groupby(RevisionID,RevisionNumber ) VALUES (0,'0')
INSERT INTO @tbl_Groupby(RevisionID,RevisionNumber ) VALUES (1,'1')
INSERT INTO @tbl_Groupby(RevisionID,RevisionNumber ) VALUES (2,'R2')
INSERT INTO @tbl_Groupby(RevisionID,RevisionNumber ) VALUES (3,'R8')
INSERT INTO @tbl_Groupby(RevisionID,RevisionNumber ) VALUES (3,'R1')
INSERT INTO @tbl_Groupby(RevisionID,RevisionNumber ) VALUES (4,'R5')
INSERT INTO @tbl_Groupby(RevisionID,RevisionNumber ) VALUES (5,'R6')
INSERT INTO @tbl_Groupby(RevisionID,RevisionNumber ) VALUES (5,'R2')
INSERT INTO @tbl_Groupby(RevisionID,RevisionNumber ) VALUES (6,'R7')
INSERT INTO @tbl_Groupby(RevisionID,RevisionNumber ) VALUES (7,'R10')
INSERT INTO @tbl_Groupby(RevisionID,RevisionNumber ) VALUES (8,'R11')
INSERT INTO @tbl_Groupby(RevisionID,RevisionNumber ) VALUES (9,'R12')
INSERT INTO @tbl_Groupby(RevisionID,RevisionNumber ) VALUES (10,'R15')
INSERT INTO @tbl_Groupby(RevisionID,RevisionNumber ) VALUES (7,'R3')
INSERT INTO @tbl_Groupby(RevisionID,RevisionNumber ) VALUES (8,'R4')
INSERT INTO @tbl_Groupby(RevisionID,RevisionNumber ) VALUES (1,'R8')
INSERT INTO @tbl_Groupby(RevisionID,RevisionNumber ) VALUES (1,'R11')
INSERT INTO @tbl_Groupby(RevisionID,RevisionNumber ) VALUES (1,'R8')
INSERT INTO @tbl_Groupby(RevisionID,RevisionNumber ) VALUES (1,'R3')
INSERT INTO @tbl_Groupby(RevisionID,RevisionNumber ) VALUES (63,'R8')
INSERT INTO @tbl_Groupby(RevisionID,RevisionNumber ) VALUES (64,'R9')
INSERT INTO @tbl_Groupby(RevisionID,RevisionNumber ) VALUES (65,'R9')
INSERT INTO @tbl_Groupby(RevisionID,RevisionNumber ) VALUES (66,'R9')
INSERT INTO @tbl_Groupby(RevisionID,RevisionNumber ) VALUES (67,'R9')
INSERT INTO @tbl_Groupby(RevisionID,RevisionNumber ) VALUES (68,'R9')
INSERT INTO @tbl_Groupby(RevisionID,RevisionNumber ) VALUES (50,'R3')
INSERT INTO @tbl_Groupby(RevisionID,RevisionNumber ) VALUES (2,'R15')
INSERT INTO @tbl_Groupby(RevisionID,RevisionNumber ) VALUES (2,'R13')
INSERT INTO @tbl_Groupby(RevisionID,RevisionNumber ) VALUES (2,'R3')
INSERT INTO @tbl_Groupby(RevisionID,RevisionNumber ) VALUES (2,'R8')
INSERT INTO @tbl_Groupby(RevisionID,RevisionNumber ) VALUES (2,'R11')
INSERT INTO @tbl_Groupby(RevisionID,RevisionNumber ) VALUES (2,'R3')
INSERT INTO @tbl_Groupby(RevisionID,RevisionNumber ) VALUES (2,'R15')
INSERT INTO @tbl_Groupby(RevisionID,RevisionNumber ) VALUES (2,'R13')
INSERT INTO @tbl_Groupby(RevisionID,RevisionNumber ) VALUES (2,'R3')
INSERT INTO @tbl_Groupby(RevisionID,RevisionNumber ) VALUES (2,'R8')
INSERT INTO @tbl_Groupby(RevisionID,RevisionNumber ) VALUES (2,'R11')
INSERT INTO @tbl_Groupby(RevisionID,RevisionNumber ) VALUES (2,'R8')
INSERT INTO @tbl_Groupby(RevisionID,RevisionNumber ) VALUES (2,'R8')
INSERT INTO @tbl_Groupby(RevisionID,RevisionNumber ) VALUES (2,'R10')
INSERT INTO @tbl_Groupby(RevisionID,RevisionNumber ) VALUES (2,'R3')
INSERT INTO @tbl_Groupby(RevisionID,RevisionNumber ) VALUES (2,'R8')
INSERT INTO @tbl_Groupby(RevisionID,RevisionNumber ) VALUES (2,'R13')
INSERT INTO @tbl_Groupby(RevisionID,RevisionNumber ) VALUES (2,'R13')
INSERT INTO @tbl_Groupby(RevisionID,RevisionNumber ) VALUES (2,'R13')
INSERT INTO @tbl_Groupby(RevisionID,RevisionNumber ) VALUES (2,'R13')
INSERT INTO @tbl_Groupby(RevisionID,RevisionNumber ) VALUES (2,'R13')
INSERT INTO @tbl_Groupby(RevisionID,RevisionNumber ) VALUES (2,'R13')
INSERT INTO @tbl_Groupby(RevisionID,RevisionNumber ) VALUES (2,'R8')
INSERT INTO @tbl_Groupby(RevisionID,RevisionNumber ) VALUES (6,'R3')
INSERT INTO @tbl_Groupby(RevisionID,RevisionNumber ) VALUES (6,'R15')
INSERT INTO @tbl_Groupby(RevisionID,RevisionNumber ) VALUES (6,'R13')
INSERT INTO @tbl_Groupby(RevisionID,RevisionNumber ) VALUES (6,'R3')
INSERT INTO @tbl_Groupby(RevisionID,RevisionNumber ) VALUES (6,'R8')
INSERT INTO @tbl_Groupby(RevisionID,RevisionNumber ) VALUES (6,'R11')
INSERT INTO @tbl_Groupby(RevisionID,RevisionNumber ) VALUES (6,'R14')
INSERT INTO @tbl_Groupby(RevisionID,RevisionNumber ) VALUES (7,'R16')
INSERT INTO @tbl_Groupby(RevisionID,RevisionNumber ) VALUES (7,'R15')
INSERT INTO @tbl_Groupby(RevisionID,RevisionNumber ) VALUES (7,'R8')
INSERT INTO @tbl_Groupby(RevisionID,RevisionNumber ) VALUES (7,'R6')
INSERT INTO @tbl_Groupby(RevisionID,RevisionNumber ) VALUES (7,'R3')
INSERT INTO @tbl_Groupby(RevisionID,RevisionNumber ) VALUES (7,'R10')
INSERT INTO @tbl_Groupby(RevisionID,RevisionNumber ) VALUES (51,'R16')
INSERT INTO @tbl_Groupby(RevisionID,RevisionNumber ) VALUES (52,'R15')
INSERT INTO @tbl_Groupby(RevisionID,RevisionNumber ) VALUES (53,'R6')
INSERT INTO @tbl_Groupby(RevisionID,RevisionNumber ) VALUES (54,'R5')
INSERT INTO @tbl_Groupby(RevisionID,RevisionNumber ) VALUES (54,'R8')
INSERT INTO @tbl_Groupby(RevisionID,RevisionNumber ) VALUES (55,'R7')
INSERT INTO @tbl_Groupby(RevisionID,RevisionNumber ) VALUES (55,'R11')
INSERT INTO @tbl_Groupby(RevisionID,RevisionNumber ) VALUES (56,'R12')
INSERT INTO @tbl_Groupby(RevisionID,RevisionNumber ) VALUES (57,'R8')
INSERT INTO @tbl_Groupby(RevisionID,RevisionNumber ) VALUES (58,'R1')
INSERT INTO @tbl_Groupby(RevisionID,RevisionNumber ) VALUES (59,'R0')
INSERT INTO @tbl_Groupby(RevisionID,RevisionNumber ) VALUES (60,'R0')
INSERT INTO @tbl_Groupby(RevisionID,RevisionNumber ) VALUES (61,'R8')
INSERT INTO @tbl_Groupby(RevisionID,RevisionNumber ) VALUES (62,'R12')
--Distinct
SELECT DISTINCT [RevisionID] AS RevisionName
,ROW_NUMBER() OVER ( ORDER BY [RevisionID] ASC) AS Rank
FROM @tbl_Groupby


--
---- Group by
SELECT [RevisionID] AS RevisionName
,ROW_NUMBER() OVER ( ORDER BY [RevisionID] ASC) AS Rank
FROM @tbl_Groupby
GROUP BY [RevisionID]

No comments:

Post a Comment