要获取重复项,您可以使用以下 T-SQL。
SELECT ID, Seq FROM MyTable GROUP BY ID, Seq HAVING COUNT(Seq) > 1
编辑
为了找出丢失的序列号,我将 njr101 提供的代码更新为:
SELECT ID, Seq FROM MyTable t1 WHERE ID IN (
SELECT ID FROM MyTable
GROUP BY ID
HAVING COUNT(DISTINCT Seq) <> MAX(Seq)
) AND t1.seq <> 1 AND NOT EXISTS (
SELECT * FROM MyTable t2 WHERE t2.id=t1.id AND t2.seq = t1.seq - 1
)
ORDER BY ID
第一个子查询计算该 ID 的不同行数(忽略重复项)。如果该数字与结果集中包含的最大数字相同,则该 ID 的值应该没问题。如果不相等,则结果将在子查询中可用。
第二部分(借助 njr101 的查询)过滤结果集以仅包含最后一个 ID 和 seq 应插入缺失值的位置。结果如下:
My Data
=========
A 1
A 2
A 3
A 20 <--- Missing (displayed in results)
B 1
B 2
B 3
B 3
B 4
C 1
C 2
C 4 <--- Missing (displayed in results)
C 5
C 15 <--- Missing (displayed in results)
C 16
Results
=======
A 20
C 4
C 15