Я пытаюсь вставить недостающие строки в таблицу. Один из столбцов — OrderNumber
(номер сортировки), этот столбец должен быть +1 от максимального значения OrderNumber
, возвращаемого для sID
в таблице. Некоторые sIDs
не отображаются в таблице SPOL
, поэтому в конце оператора есть предложение WHERE
. Я бы снова запустил этот оператор, но установил OrderNumber
в 1 для записей, где sID
в настоящее время не существует в таблице.
Приведенный ниже оператор не работает из-за того, что OrderNumber
вызывает проблемы с первичным ключом, которым является sID + OrderNumber
.
Как я могу увеличить OrderNumber
для каждой строки, которая вставляется на основе столбца sID
?
INSERT INTO SPOL(sID, OrderNumber, oID)
SELECT
sID, OrderNumber, oID
FROM
(SELECT
sID,
(SELECT Max(OrderNumber) + 1
FROM SPOL
WHERE sID = TMPO.sID) AS OrderNumber,
oID
FROM TMPO
WHERE NOT EXISTS (SELECT * FROM SPOL
WHERE SPOL.oID = TMPO.oID)
) AS MyData
WHERE
OrderNumber IS NOT NULL