дубликаты будут удалены sql - PullRequest
0 голосов
/ 25 июня 2018

у меня в базе данных записей

enter image description here

Мой sql:

    SELECT
    DISTINCT name, date(mod_wr)
FROM
    test.object_stg
WHERE
    ir = '4552724'
GROUP BY
    name, date(mod_wr)
ORDER BY name

Последняя запись такая же, как последняя, ​​но одна. У него только другая дата. Можно ли как-то сделать запрос на возврат всех записей, где произошли изменения в столбце «имя»? Для записи 4 и 5 есть одно и то же имя, только другая дата. Я хотел бы, чтобы он возвращал только записи 4 и 5, потому что никаких изменений не было.

Ответы [ 2 ]

0 голосов
/ 25 июня 2018

Если вы не хотите удалять строки, в которых значения используются повторно.Например, в вашей строке # 2 вы можете использовать LAG(), а затем включать только те строки, значение которых отличается от предыдущего.Например,

select name, date(mod_wr) from
(
    SELECT
        name, mod_wr, lag(name) over(order by mod_wr) as prev_name
    FROM
        test.object_stg
    WHERE
        ir = '4552724'
)
WHERE prev_name IS NULL OR name <> prev_name
0 голосов
/ 25 июня 2018

Из ваших образцов данных у вас есть 3 различных имени.Тем не менее, вы не можете использовать различные в вашем утверждении выбора, потому что это относится к каждому перечисленному полю, и ни одна из дат не дала бы точного соответствия.

Однако вы можете использовать группирование по утверждению для того, чтобы объединить ваши названия вместе,

// MySQL 5.6 Statement
select name, date(mod_wr) from object_stg group by name;
// MSSQL 2017 Statement
select name, max(mod_wr) from object_stg group by name;

Оба оператора возвращают 3 строки с показом только BMW, 1.0 GL и 1.0 GLS с одной датой.

SQL Fiddle

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