développeur Oracle SQL: J'ai un jeu de données, il y a des identifiants qui ne sont pas uniques. Certains de ces identifiants ont une date d'annulation. Je voudrais ajouter la date d'annulation aux lignes avec le même identifiant. Exemple:
product ; cancellation; cancelled; a null 23-01-2019 b 12-01-2019 12-01-2019 c null null d null null a 23-01-2019 23-01-2019 b null 12-01-2019
4 Réponses :
Vous pouvez essayer ceci:
SELECT prod.product,
prod.cancellation,
canc.cancellation AS cancelled
FROM my_table prod
LEFT OUTER JOIN my_table canc
ON prod.product = canc.product
AND canc.cancellation IS NOT NULL;
Vous pouvez utiliser une fonction de fenêtre dans un SELECT CODE>: update t
set cancelled = (select max(t2.cancellation)
from t t2
where t2.product = t.product
)
where exists (select 1
from t t2
where t2.product = t.product and
t2.cancellation is not null
);
Si je vous ai bien compris, je le ferais comme ceci:
ALTER TABLE your_first_table
ADD cancelled DATE;
CREATE TABLE your_temp_table(PRODUCT, CANCELLATION)
AS
SELECT PRODUCT, CANCELLATION
FROM your_first_table ;
UPDATE your_first_table A
SET cancelled = (SELECT CANCELATION
FROM your_temp_table B
WHERE B.PRODUCT = A.PRODUCT
AND A.CANCELLATION IS NOT NULL);
Vous pouvez utiliser acclamations !! / p> p> p> fusion code> instruction: