SQL, убрать дублирующиеся значения при условии если записи идут друг за другом
Всем привет! Я сортирую таблицу с логированием изменений значений в атрибутах, но, к сожалению, даже если атрибут не менялся, при каждом сохранении значение вновь перезаписывается как на новое, так и на то же самое. В прикрепленном примере вы можете заметить как подряд идут одинаковые записи с одним и тем же значением "Высокая". Далее я изменила значение на "Низкая", а потом вновь поменяла на "Высокая". Именно в случае, где значения "Высокая" идут подряд, логирование выполняется неправильно. Подскажите, как можно убрать повторяющиеся подряд строки? В итоге должны остаться следующие записи: Средняя - Высокая (30.07.2024 14:52) - Низкая - Высокая.
Ответы (1 шт):
Ну, например, так:
WITH cte AS (
SELECT *, LAG(new_val_name) OVER (PARTITION BY attr_name ORDER BY stamp) lag_val_name
FROM test
)
DELETE FROM test
USING cte
WHERE (test.attr_name, test.new_val_name, test.stamp)
=
(cte.attr_name , cte.lag_val_name , cte.stamp);