Pamiętam, że jak pracowałem na Firebirdzie, to bardziej złożone update'y musiałem ogarniać procedurami, bo FB nie ma UPDATE FROM (a przynajmniej nie miał za moich czasów).
W TSQL wyglądałoby to tak:
UPDATE t
SET t.kolumna = isnull(m.maxwart, 0) + t.nowa
FROM (
SELECT max(kolumna) maxwart
FROM tabela
) m
JOIN (
SELECT row_number() OVER (
ORDER BY kolumna
) nowa
, kolumna
FROM tabela
WHERE kolumna IS NULL
) t ON 1 = 1
Jednym zapytaniem tego na pewno nie zrobisz w Firebirdzie. Chyba, że stworzysz sobie generator, któremu przypiszesz wartość maksymalną ze swojej kolumny, po czym użyjesz generatora do nadpisania wszystkich nulli.
Nasuwa się jednak jedno pytanie - dlaczego tam występują nulle, skoro są niepożądane?
A moglibyśmy jeszcze raz przeanalizować ten przypadek??. Bo nie wiem, czy dobrze zrozumiałem, to zapytanie, które wypisałeś. Natomiast aby było łatwiej, to będę opierał się na realnych wartościach.
Mam taką tabelę jak na zrzucie. W tym momencie wszystkie wiersze poza jednym z pola swcp_id, to są nulle. Teraz właśnie jak przełożyć to twoje zapytanie, tak żeby updetować te nulle, tak żeby od wartości dla swcp_id = 1065 zwiększyć wszystko o 1.
A drugi wariant, żeby zacząć również od 1065, jeśli wszyskie wiersze są nullami: