sql - 识别 SQL 查询中的重复字段

标签 sql sql-server-2012

我有一个返回这样的列的 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/

相关文章:

sql - 对于 PostgreSQL 中的 boolean 数据类型,输出 "yes/no"而不是 "t/f"

sql - 如何跟踪SQL Server中记录的变化?

MySQL表分区时间戳

mysql - 使用 mySQL 数据源创建 SSRS 报告

sql-server-2012 - SQL Server Management Studio 无法启动 - 找不到类型库

sql-server - 根据 SQL Server 中的日期和规则识别记录子集

sql-server-2012 - DateDiff - 夏令时问题

mysql - 使用 3 个不同的表外键和主键更新设置表

mysql - 在sql查询中使用sum连接表

mysql - 通过映射表一对多连接查询