在TSQL中仅选择唯一的连续行

时间:2017-11-22 19:50:00

标签: sql-server tsql

之前有几个问题(1& 2)与我正在尝试的内容非常接近,但未能取出答案。

就我而言,我的数据可能包含多个连续重复项,因此从Martin did开始:

e.g。

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个或更多重复的连续值。

1 个答案:

答案 0 :(得分: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