Как выбрать уникальную запись в таблице, которая не имеет ключевых ограничений

У меня была таблица с именем uniq_select_records со следующими столбцами:

sno number, 
item_name varchar2(50),
start_date date, 
end_date date, 
action_flag char(1),
last_modified_date date, 
creation_date date

sno - это столбец, который я использовал для определения строки для item_name, и он не является уникальным или первичным ключом, но не был нулевым. sno будет присутствовать для каждого элемента. Нет элементов равно no из sno. Образец

sno item_name start_date  end_date Action_flag last_modified creation_date
--- --------- ----------  -------- ----------- ------------- -------------
1   sample1   02-MAY-15  27-MAY-14    A        07-MAY-15        02-MAY-15
1   sample1   02-MAY-15  27-MAY-14    D        07-MAY-15        02-MAY-15
1   sample1   27-APR-15  06-JUN-14    C        07-MAY-15        02-MAY-15
1   sample1   27-APR-15  06-JUN-14    C        07-MAY-15        03-MAY-15
2   sample2   07-MAY-15  11-FEB-15    C        07-MAY-15        22-JAN-15
2   sample2   07-MAY-15  11-FEB-15    A        07-MAY-15        22-JAN-15
2   sample2   07-MAY-15  01-FEB-15    C        12-MAY-15        12-MAY-15

Значения флага действия C = изменить, D = 'Удалено и A = вставить примеры данных показаны выше. у нас есть миллионы записей. теперь нам нужно выбрать запись для записи, которая имела последнее изменение для каждого элемента. каждый элемент может иметь свой собственный start_date и end_date. Все элементы не были изменены в тот же день.

Может кто-нибудь предложить идею, как получить записи для каждого элемента, которые являются последними изменениями для элемента.

заблаговременно.

Ответы

Ответ 1

SELECT sno, item_name, max(last_modified)
  FROM uniq_select_records
GROUP BY sno, item_name