Bonjour,

Je cherche à optimiser la requête suivante (bcp trop longue à s'exécuter) :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
SELECT DISTINCT DATEPART(Yy,_APPEL.Date) AS ANNEE,
 
(select COUNT(*) from APPEL INNER JOIN
OBJET ON
APPEL.C_OBJET = OBJET.C_OBJET
Where APPEL.C_NATURE='SAV'
AND C_REF LIKE '%15D%'
AND DATEPART(Yy,APPEL.Date)=DATEPART(Yy,_APPEL.Date)) AS Prod1,
 
(select COUNT(*) from APPEL INNER JOIN
OBJET ON
APPEL.C_OBJET = OBJET.C_OBJET
Where APPEL.C_NATURE='SAV'
AND ( C_REF LIKE '%20D%' AND C_REF NOT LIKE '%XI2%')
AND DATEPART(Yy,APPEL.Date)=DATEPART(Yy,_APPEL.Date)) AS Prod2,
 
(select COUNT(*) from APPEL INNER JOIN
OBJET ON
APPEL.C_OBJET = OBJET.C_OBJET
Where APPEL.C_NATURE='SAV'
AND ( C_REF LIKE '%XI2%')
AND DATEPART(Yy,APPEL.Date)=DATEPART(Yy,_APPEL.Date)) AS Prod3,
 
(select COUNT(*) from APPEL INNER JOIN
OBJET ON
APPEL.C_OBJET = OBJET.C_OBJET
Where APPEL.C_NATURE='SAV'
AND C_REF LIKE '%4102%'
AND DATEPART(Yy,APPEL.Date)=DATEPART(Yy,_APPEL.Date)) AS Prod4
 
FROM APPEL _APPEL
ORDER BY ANNEE

En gros, je cherche à obtenir le nombre de produit (pour les 4 références) pour chaque année. Il est indispensable de ne faire qu'une seule requête.
Si vous avez des idées..

Merci!