5 votes

Requête SQL Server pour mettre à jour plusieurs lignes avec le même nom

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);

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X