以前有几个问题(1& 2)非常接近我想做的事情,但无法取消答案。
就我而言,我的数据可能包含多个顺序重复,因此从马丁做的地方开始:
例如。
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
消除顺序重复,但要保持独特的值。在以前的所有问题中,使用铅和 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