我有一个返回这样的列的 SQL 查询:
foo
-----------
1200
1200
1201
1200
1200
1202
1202
1202
它已经以特定方式排序,我想对这个结果集执行另一个查询来识别重复数据,如下所示:
foo ID
---- ----
1200 1
1200 1
1201 2
1200 3
1200 3
1202 4
1202 4
1202 4
重要的是,第二组 1200 被确定为与第一组分开。 OVER/PARTITION 的每个变体似乎都想将两个组混为一谈。有没有办法将分区窗口化到这些重复的组?
编辑:
这是针对 Microsoft SQL Server 2012
最佳答案
不确定这将是最快的结果......
select main.num, main.id from
(select x.num,row_number()
over (order by (select 0)) as id
from (select distinct num from num) x) main
join
(select num, row_number() over(order by (select 0)) as ordering
from num) x2 on
x2.num=main.num
order by x2.ordering
假设表“num”有一个包含您的数据的列“num”,按顺序——当然 num 可以被制作成 View 或原始查询的“with”。
请看以下sqlfiddle
关于sql - 识别 SQL 查询中的重复字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20907852/