生成DENSE_RANK()而不使用order by子句-SQL Server

Parita navadiya

我是新手SQL Server,任何人都可以在我的查询中指导我,这对我很有帮助。

我需要像下面的例子那样生成等级:

Report No               Rank 
----------------------------
18  3229                 1
89-0119-87               2
180261292                3
180261292                3
18  3107                 4
18A 7     A06            5
T18002415                6
T18002415                6
T18002415                6
0000000018-519           7
0000000018-519           7
0000000018-519           7
0000000018-519           7
0000000018-655           8
000000018-1002           9
000000018-1002           9
000000018-1002           9
000000018-5712           10

如果我使用生成排名

DENSE_RANK() OVER(ORDER BY ReportNo DESC)

那么我没有得到所需的输出。你能指导我吗?如上例所示,如何生成排名?

DineshDB

试试这个:

DECLARE @Tab TABLE(Report_No VARCHAR(100))

INSERT INTO @Tab VALUES('18  3229')
INSERT INTO @Tab VALUES('89-0119-87')
INSERT INTO @Tab VALUES('180261292')
INSERT INTO @Tab VALUES('180261292')
INSERT INTO @Tab VALUES('18  3107')
INSERT INTO @Tab VALUES('18A 7     A06')
INSERT INTO @Tab VALUES('T18002415')
INSERT INTO @Tab VALUES('T18002415')
INSERT INTO @Tab VALUES('T18002415')
INSERT INTO @Tab VALUES('0000000018-519')
INSERT INTO @Tab VALUES('0000000018-519')
INSERT INTO @Tab VALUES('0000000018-519')
INSERT INTO @Tab VALUES('0000000018-519')
INSERT INTO @Tab VALUES('0000000018-655')
INSERT INTO @Tab VALUES('000000018-1002')
INSERT INTO @Tab VALUES('000000018-1002')
INSERT INTO @Tab VALUES('000000018-1002')
INSERT INTO @Tab VALUES('000000018-5712')

SELECT *
    ,ROW_NUMBER() OVER(ORDER BY (SELECT NULL)) RN
INTO #temp
FROM @Tab T1

SELECT T1.Report_No
    ,SUM(CASE WHEN T1.Report_No = T2.Report_No THEN 0 ELSE 1 END) OVER(ORDER BY T1.rn)[Rank]
FROM #temp T1
LEFT JOIN #temp T2 ON T1.rn = T2.rn+1

DROP TABLE #temp

输出:

Report_No       Rank
18  3229        1
89-0119-87      2
180261292       3
180261292       3
18  3107        4
18A 7     A06   5
T18002415       6
T18002415       6
T18002415       6
0000000018-519  7
0000000018-519  7
0000000018-519  7
0000000018-519  7
0000000018-655  8
000000018-1002  9
000000018-1002  9
000000018-1002  9
000000018-5712  10

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章