gpt4 book ai didi

sql - 获取结果集中sql server中记录的行号

转载 作者:行者123 更新时间:2023-12-02 06:43:41 24 4
gpt4 key购买 nike

我有一张表格,里面装满了带有序列号的文档 - 列:

  • 文档文档
  • 写文字
  • 提交日期日期时间

...我想找出特定序列号在对表的查询中的位置。

例如,如果我按 submissionDate asc 对结果集进行排序,我可能想知道文档 34 在该排序中的什么位置(即它是否在第 11 位?)

我该怎么做?

最佳答案

SQL Server 2005+,使用分析函数:

SELECT t.docid,
t.writing,
t.submissiondate,
ROW_NUMBER() OVER(ORDER BY t.submissiondate) AS position
FROM YOUR_TABLE t

非解析版

这种方法存在非连续值的风险,因为如果有两个(或更多)记录具有相同的 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

关于sql - 获取结果集中sql server中记录的行号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4090911/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com