Cav*_*rob 2 sql t-sql sql-server
我有一个包含序列号的文件表 - 列:
...而且我想知道特定序列号在针对表的查询中的位置.
例如,如果我通过submissionDate asc命令结果集,我可能想知道文档34在该排序中的位置(即它在位置11?)
我该怎么做呢?
SELECT t.docid,
t.writing,
t.submissiondate,
ROW_NUMBER() OVER(ORDER BY t.submissiondate) AS position
FROM YOUR_TABLE t
Run Code Online (Sandbox Code Playgroud)
这种方法存在非连续值的风险,因为如果有两个(或更多)具有相同submissiondate值的记录- 它们都将具有相同的位置值.它与使用RANK或DENSE_RANK分析函数相同,因为ROW_NUMBER将始终为每条记录授予唯一值,而不考虑重复值.
SELECT x.docid,
x.writing,
x.submissiondate,
(SELECT COUNT(*)
FROM YOUR_TABLE y
WHERE y.submissiondate <= x.submissiondate) AS position
FROM YOUR_TABLE x
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10090 次 |
| 最近记录: |