Вы можете получить последнюю запись для каждой продажи, используя row_number()
. Чтобы вставить результат в другую таблицу, oyu может использовать INSERT ... SELECT
.
INSERT INTO table2
(saleid,
assignedto,
moddate)
SELECT saleid,
assignedto,
moddate
FROM (SELECT saleid,
assignedto,
moddate,
row_number() OVER (PARTITION BY saleid
ORDER BY moddate DESC) row#
FROM table1) x
WHERE row# = 1;
Если целевая таблица еще не существует, вы также можете создать и заполнить ее за один раз SELECT ... INTO
.
SELECT saleid,
assignedto,
moddate
INTO table2
FROM (SELECT saleid,
assignedto,
moddate,
row_number() OVER (PARTITION BY saleid
ORDER BY moddate DESC) row#
FROM table1) x
WHERE row# = 1;
Или, если вам нужен объект, который может быть запрошен как таблица, и он всегда отображает только последнее задание и автоматически обновляется, вы можете использовать представление в виде scsimon, предложенное в комментариях к этому ответу.
CREATE VIEW view1
AS
SELECT saleid,
assignedto,
moddate
FROM (SELECT saleid,
assignedto,
moddate,
row_number() OVER (PARTITION BY saleid
ORDER BY moddate DESC) row#
FROM table1)
WHERE row# = 1;