Bonjour,
Je travaille sur une extraction SQL à partir de SQL Serveur afin de générer un rapport.
Pour simplifier le problème, j'ai 2 tables qui contiennent le type d'enregistrements suivant:
TBLE_USAGE
---------------------------------------------
ID | RES | HEURES_SUPP |
---------------------------------------------
1 | Pierre | 7.5
---------------------------------------------
2 | Steve | 12
---------------------------------------------
3 | Claire | 4
TBLE_RES
---------------------------------------------
ID | RES | RES_MANAGER|
---------------------------------------------
1 | Pierre | Elise
---------------------------------------------
2 | Steve | Elise
---------------------------------------------
3 | Thierry | Eric
Voilà je souhaiterais avoir la somme des heures supplementaires qu'ont réalisé les employés sous la direction de ELISE.
Voici ma requête qui fonctionne correctement:
Maintenant je voudrais l'imbriquer dans ma requête générale qui va me générer mon rapport. J'utilise donc le CASE. C'est le cas via la requête suivante:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 SELECT SUM(HEURES_SUPP) AS TOTAL_ELISE FROM TBLE_USAGE WHERE TBLE_USAGE.RES IN (SELECT RES FROM TBLE_RES WHERE RES_MANAGER='ELISE')
Cela fonctionne correctement mais le problème c'est que si je suis obligé d'entrer le nom des employés sous la direction de ELISE dans mon script SQL, bonjour la galère si 'il y en a beaucoup...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 SELECT SUM(CASE RTRIM(RES) WHEN 'PIERRE' THEN TBLE_USAGE.HEURES_SUPP WHEN 'STEVE' THEN TBLE_USAGE.HEURES_SUPP ELSE 0 END) AS "TOTAL_ELISE" FROM TBLE_USAGE, TBLE_RES
Donc j'ai essayer d'utiliser une variable mais ça ne marche pas...
Voici l'erreur:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 DECLARE @var varchar SET @var = (SELECT RES FROM TBLE_RES WHERE RES_MANAGER='ELISE') SUM(CASE RTRIM(RES) WHEN @VAR THEN HEURES_SUPP ELSE 0 END) AS "TOTAL_ELISE"
Bon voilà je pense que ce n'ai pas possible avec le CASE...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 Server: Msg 512, Level 16, State 1, Line 2 Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression. (1 row(s) affected)
Est-ce que vous auriez une idée s'il vous plaît parce que là je rame.
Merci
Partager