USE TEMPDB
CREATE TABLE DBO.TABELLA
(
ID_F INT PRIMARY KEY
, ID_P INT NULL FOREIGN KEY REFERENCES DBO.TABELLA (ID_F)
, VALORE INT
)
INSERT INTO DBO.TABELLA (ID_F, ID_P, VALORE)
VALUES (1, NULL, 123)
INSERT INTO DBO.TABELLA (ID_F, ID_P, VALORE)
VALUES (2, NULL, 345)
INSERT INTO DBO.TABELLA (ID_F, ID_P, VALORE)
VALUES (3, 1, 999)
SELECT *
FROM DBO.TABELLA
UPDATE DBO.TABELLA
SET
VALORE = COALESCE(F.VALORE, P.VALORE)
FROM DBO.TABELLA AS F
LEFT OUTER JOIN DBO.TABELLA AS P
ON F.ID_P = P.ID_F
SELECT *
FROM DBO.TABELLA
DROP TABLE DBO.TABELLA
Questa cosa genera errore a causa dell'ambiguitᅵ nel Update.
Ho provvisoriamente risolto modificando (ma non mi piace neanche un
po') in:
UPDATE DBO.TABELLA
SET
VALORE = COALESCE(F.VALORE, P.VALORE)
FROM DBO.TABELLA AS F
LEFT OUTER JOIN (SELECT * FROM DBO.TABELLA) AS P
ON F.ID_P = P.ID_F
Qual'ᅵ la via 'pulita' per una cosa del genere?
Alberto
>
> Qual'ᅵ la via 'pulita' per una cosa del genere?
>
Ai ai ai, la punta sds 10x1000 ti ha rovinato i neuroni, ormai sei un
tossico... :-DDD
UPDATE F
Ho giᅵ detto a tutti che appena mi arriva mi presento con la punta in
ufficio...
> UPDATE F
> SET
> VALORE = COALESCE(F.VALORE, P.VALORE)
> FROM DBO.TABELLA AS F
> LEFT OUTER JOIN DBO.TABELLA AS P
> ON F.ID_P = P.ID_F
Avevo provato
UPDATE DBO.TABELLA AS F
ma non funzionava...
Perᅵ c'ero vicino...
Grazie.
Ciao
Alberto