Как отфильтровать предыдущую запись, если одно поле одинаково в sql - PullRequest
0 голосов
/ 30 апреля 2019

У меня есть записи, подобные приведенным ниже:

ID            Date              Title        User 
1   2019-04-29 14:15:55.567      A           1222
2   2019-04-29 14:25:13.530      A           1222
3   2019-04-29 15:17:07.210      A           1222
4   2019-04-29 16:05:49.067      B           1048
5   2019-04-29 16:36:37.330      C           681
6   2019-04-29 16:37:16.250      C           681
7   2019-04-29 16:37:49.160      D           681
8   2019-04-29 16:38:48.803      C           681

Я хочу проверить каждую запись с предыдущей записью, и если заголовок обеих записей одинаков, игнорировать предыдущую.

Я хочу видеть такой результат:

ID            Date              Title        User 
3   2019-04-29 15:17:07.210      A           1222
4   2019-04-29 16:05:49.067      B           1048
6   2019-04-29 16:37:16.250      C           681
7   2019-04-29 16:37:49.160      D           681
8   2019-04-29 16:38:48.803      C           681

Ответы [ 3 ]

1 голос
/ 30 апреля 2019

Использование lead():

select t.*
from (select t.*,
             lead(title) over (order by id) as next_title
      from t
     ) t
where next_title is null or next_title <> title;

Вы хотите использовать lead(), потому что вам нужно Most последнее значение в каждой группе. Вы бы использовали lag(), если хотите получить самое раннее значение.

Я не уверен, должен ли порядок быть по id или по столбцу date. Для ваших образцов данных они эквивалентны.

1 голос
/ 30 апреля 2019

Для этого можно использовать функцию LAG:

SELECT *
FROM (
    SELECT *
         , LAG(title) OVER (ORDER BY Date) AS prev_title
    FROM t
) AS x
WHERE title <> prev_title
1 голос
/ 30 апреля 2019

использование lag()

ДЕМО

select * from
(
select *, lag(title) over(order by date desc) as prevtitle
from tablename
)A where prevtitle is null or title<>prevtitle

ВЫХОД:

id  dateval             title   userid
3   29/04/2019 15:17:07   A      1222
4   29/04/2019 16:05:49   B      1048
6   29/04/2019 16:37:16   C      681
7   29/04/2019 16:37:49   D      681
8   29/04/2019 16:38:48   C      681
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...