我想从 SQL Server 表中选择重复的条目,但前提是 id 是连续的。
我一直在努力扭转这个答案 https://stackoverflow.com/a/3298645/1778169满足我的需要,但我无法让它工作。
上面的答案是针对Oracle的,但我看到SQL Server也有lead
and lag
功能。
另外,我认为上面的答案提出了一个*
在重复项旁边,但我只想选择重复项。
select
id, companyName,
case
when companyName in (prev, next)
then '*'
end match,
prev,
next
from
(select
id,
companyName,
lag(companyName, 1) over (order by id) prev,
lead(companyName, 1) over (order by id) next
from
companies)
order by
id;
Example:
所以从这个数据集中:
id companyName
-------------------
1 dogs ltd
2 cats ltd
3 pigs ltd
4 pigs ltd
5 cats ltd
6 cats ltd
7 dogs ltd
8 pigs ltd
我想选择:
id companyName
-------------------
3 pigs ltd
4 pigs ltd
5 cats ltd
6 cats ltd
Update
我时不时地对我在 SO 上得到的答案的数量和质量感到惊讶。这是其中之一。我没有足够的专业水平来判断一个答案比另一个答案更好,所以我选择了 SqlZim,因为这是我看到的第一个有效答案。但很高兴看到不同的方法。尤其是就在一个小时前,我还在想“这可能吗?”。