Jas*_*son 5 sql t-sql position count
想象一下,我有一张桌子:
ID field1 field2
--- ------- ------
111 1 11113
112 1 11114
113 1 44321
114 1 49339
115 2 53234
Run Code Online (Sandbox Code Playgroud)
我对所有记录感兴趣field1 = 1- 特别是field2 = 44321,但我想知道它在我的选择中的位置field1=1(在这种情况下,它是3).
SELECT * FROM table WHERE field1 = 1 ORDER BY id
Run Code Online (Sandbox Code Playgroud)
会得到我想要的所有记录,但我想知道的是数字3(选择中44321的位置 - 它是查询中的第3条记录,我想知道3).
是否有任何优雅的查询我可以找到我特别感兴趣的行的位置,或者我是否需要光标获取并遍历我的记录集并找出一些反向++业务?
我知道我想要的field1,我知道我想要的field2 - 我只想知道field1 + field2在更大的field1 = 1查询中的位置 - 那个3,位置).
试试这个:
POS列将给出您要查找的记录的位置
WITH qry AS
(
SELECT a.*
ROW_NUMBER() OVER(ORDER BY id) POS
FROM table a
WHERE field1 = 1
)
SELECT qry.pos
FROM qry
WHERE field2 = 44321
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2055 次 |
| 最近记录: |