Bonjour,

je dois définir une vue sur des tables A et B
La table B doit être utilisée plusieurs fois avec A avec des conditions différentes.
J'utilise donc des sous-requêtes.
Voici un extrait de mon code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
...
(SELECT SUM(B.heures) FROM B
    WHERE B.col1 IN ('2','3') AND B.col2='NE' AND A.ID=B.ID) 
    AS req_B_1,
(SELECT SUM(B.montant) FROM B
    WHERE B.col1 IN ('2','3') AND B.col2='NE' AND AND A.ID=B.ID) 
    AS req_B_2,
(SELECT SUM(B.heures) FROM B
    WHERE B.col1='5' AND STR_TYPE='NE' AND AND A.ID=B.ID) 
    AS req_B_3,
(SELECT SUM(B.montant) FROM B
    WHERE SB.col1='5' AND STR_TYPE='NE' AND AND A.ID=B.ID) 
    AS req_B_4,
...
Le problème est que j'ai environ 20 sous-requêtes comme celles ci-dessus, et que cela plombe le temps d'exécution. D'autant plus qu'on ne peut retourner qu'une seule valeur par requête: dans mon exemple, j'utilise 2 sous-requêtes avec les mêmes conditions pour récupérer le nombre d'heures et le montant . De plus B comporte plusieurs millions de lignes.
Y-a-t-il une solution plus performante ? (utiliser une table CTE qui ne comporterait que les lignes A.ID=B.ID ?)

Merci à l'avance de votre aide
Jean