之前有几个问题(12)与我要尝试的工作非常接近,但是还没有弄清楚答案。

就我而言,我的数据可能包含多个连续重复项,因此从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


消除顺序重复项,但保持唯一值的顺序。在所有前面的问题中,使用超前和滞后功能,只会向前或向后看一个,而不允许有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

10-07 12:32