Je m'amuse encore avec les tables et les requêtes, mais j'ai besoin d'aide pour une requête SQL Server.
J'ai un tableau qui ressemble à ceci.
VMName | DiskType | Status | Result
---------+------------+-------------+---------
TestVM1 | OS | Completed |
TestVM1 | Data | Completed |
TestVM2 | OS | Failed |
TestVM2 | Data | Completed |
TestVM2 | Data | Completed |
Dans la colonne des résultats, j'aimerais qu'il soit écrit "Terminé". si le système d'exploitation et les disques de données ont tous deux le statut "terminé".
Si le disque du système d'exploitation est défectueux, la colonne des résultats devrait indiquer un échec pour tous les disques de cette VM.
Comme ça.
VMName | DiskType | Status | Result
---------+------------+-------------+---------
TestVM1 | OS | Completed | Completed
TestVM1 | Data | Completed | Completed
TestVM2 | OS | Failed | Failed
TestVM2 | Data | Completed | Failed
TestVM2 | Data | Completed | Failed
J'ai essayé de bricoler une requête, mais je ne suis pas sûr de ce que je fais de mal car cela ne donne rien.
UPDATE working_table t1
SET Result = 'Failed'
WHERE disktype = 'OS' AND
status = 'Failed' AND
NOT EXISTS (SELECT 1 FROM working_table t2 WHERE t1.VMname = t2.VMname);