У меня есть в базе данных записи
Мой 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, потому что изменений не было.


Из ваших данных примера у вас есть 3 разных имени. Однако вы не можете использовать отдельный в своем операторе выбора, потому что он применяется ко всем перечисленным полям, и ни одна из дат не может обеспечить точное совпадение.
Однако вы можете использовать оператор group by, чтобы сопоставить ваши заголовки вместе.
// 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 с одной датой.
Если вы не хотите удалять строки, в которых повторно используются значения. Например. ваша строка № 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
Какую СУБД вы используете? PL / SQL - это язык программирования Oracle для работы с базами данных.