У меня есть следующая таблица:
create table issue_attributes (
issue_id number,
attr_timestamp timestamp,
attribute_name varchar2(500),
attribute_value varchar2(500),
CONSTRAINT ia-pk PRIMARY KEY (issue_id, attr_timestamp, attribute_name)
)
Идея заключается в том, чтобы связать с проблемой несколько атрибутов (статус, владелец и т. Д.), Сохраняя при этом возможность сохранять историюизменения атрибутов.
Из-за ошибок в импорте данных мы повторили данные в таблице:
select issue_id, attr_timestamp, attribute_name, attribute_value
from issue_attributes where issue_id = 1 and attribute_name = 'OWNER';
дает пример данных:
1, 01-JAN-2011 12:00, 'OWNER', 'john.doe@example.com'
1, 01-FEB-2011 12:00, 'OWNER', 'john.doe@example.com'
1, 01-MAR-2011 12:00, 'OWNER', 'john.doe@example.com'
1, 01-APR-2011 12:00, 'OWNER', 'john.doe@example.com'
Я хотел бычтобы можно было найти все экземпляры повторяющихся атрибутов и просто сохранить последний.Желаемый набор результатов в этом случае данных выборки будет:
1, 01-JAN-2011 12:00, 'OWNER', 'john.doe@example.com'
Мы также можем иметь случай данных выборки:
2, 01-JAN-2011 12:00, 'OWNER', 'john.doe@example.com'
2, 01-FEB-2011 12:00, 'OWNER', 'jane.deere@example.com'
2, 01-MAR-2011 12:00, 'OWNER', 'john.doe@example.com'
2, 01-APR-2011 12:00, 'OWNER', 'john.doe@example.com'
, в этом случае я бы хотелчтобы получить результат:
2, 01-JAN-2011 12:00, 'OWNER', 'john.doe@example.com'
2, 01-FEB-2011 12:00, 'OWNER', 'jane.deere@example.com'
2, 01-MAR-2011 12:00, 'OWNER', 'john.doe@example.com'
Это на Oracle 11g, поэтому я мог бы использовать SQL или PL / SQL для исправления данных.Я думал, что один из способов сделать это - через PL / SQL, и для каждого значения__пуска сортировать атрибуты по убыванию, а если атрибут (х) = атрибут (х-1), то удалить атрибут (х).Это похоже на грубую силу, и мне было интересно, если бы был элегантный способ сделать это только с помощью SQL.