Мне нужно запустить оператор Select (DB2 SQL), который не извлекает дубликаты соседних строк на основе определенного поля. В частности, я пытаюсь выяснить, когда данные изменяются , что затрудняется, поскольку они могут вернуться к своему первоначальному значению.
То есть, у меня есть таблица, которая немного напоминает приведенную ниже, отсортированную по письму, а затем по дате:
A, 5, 2009-01-01
A, 12, 2009-02-01
A, 12, 2009-03-01
A, 12, 2009-04-01
A, 9, 2009-05-01
A, 9, 2009-06-01
A, 5, 2009-07-01
И я хочу получить результаты:
A, 5, 2009-01-01
A, 12, 2009-02-01
A, 9, 2009-05-01
A, 5, 2009-07-01
отбрасывает соседние дубликаты, но сохраняет последний ряд (несмотря на то, что он имеет тот же номер, что и первый ряд). Очевидное:
Select Letter, Number, Min(Update_Date) from Table group by Letter, Number
не работает - не включает последнюю строку.
Редактировать: Поскольку, кажется, была некоторая путаница, я уточнил столбец месяца в столбец даты. Он был задуман как понятная человеку краткая форма, а не как действительные достоверные данные.
Редактировать: последняя строка не важна, ПОТОМУ ЧТО это последняя строка, а потому что она имеет «новое значение», которое также является «старым значением». Группировка по NUMBER обернет его с первым рядом; оно должно оставаться отдельной сущностью.