【发布时间】:2018-10-04 05:44:45
【问题描述】:
我是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)
那么我没有得到所需的输出。你能指导我吗?如上例所示,如何生成排名?
【问题讨论】:
-
请解释逻辑。为什么
89-0119-87介于18 3229和180261292之间 -
你试试我的答案吗?它有帮助还是您需要其他什么?
-
数据没有顺序。除非您指定 order by,否则您不能期望它以相同的顺序返回 - 因此尝试实现没有 order by 的排名是没有意义的。
-
@uzi 这种类型的报告没有逻辑,不,我正在从不同的站点获取数据
-
如果你找不到合适的东西放在
ORDER BY子句中来生成你正在寻找的输出,那么你的要求是不明智的——或者你缺少所需的数据填充ORDER BY或者当您无法自己将其表达到ORDER BY子句中时,您期望服务器神奇地“知道我的意思”。一个ORDER BY子句被欺骗接受一个常量(正如 Dinesh 的回答所示)只是举手并希望服务器会产生一些有时会产生令你满意的结果。
标签: sql-server database tsql window-functions