之前有几个问题( 1 和 2 )与我想要做的事情非常接近,但无法找出答案。
就我而言,我的数据可能包含多个连续重复项,因此从 Martin did 开始:
例如
id companyName
-------------------
1 dogs ltd
2 cats ltd
3 pigs ltd
4 pigs ltd
5 pigs ltd
6 cats ltd
7 cats ltd
8 dogs ltd
9 pigs ltd
我想回来
companyName
-----------
dogs ltd
cats ltd
pigs ltd
cats ltd
dogs ltd
pigs ltd
消除连续重复项,但保持唯一值按顺序排列。在前面的所有问题中,使用 lead 和 lag 函数,只会向前或向后查看一个,不允许出现 3 个或更多重复的连续值。
最佳答案
这样就可以了:
SELECT companyName
FROM
(
SELECT
id
, companyName
, LEAD(companyName, 1, NULL) OVER (ORDER BY id) lead
FROM yourTable
) Q
WHERE
companyName <> lead
OR lead IS NULL
ORDER BY id
关于sql-server - 在 SQL 中仅选择唯一的连续行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47442851/