仅在TSQL中选择唯一的顺序行



以前有几个问题(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