bonjour
j'ai pu concevoir cette requête ci-dessous qui est fonctionnelle
je voudrais avoir votre avis concernant une possible optimisation,
la requête permet d'obtenir pour chaquelib_tabA son CA par mois sur une annee donnée
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
SELECT 
tableA.lib_tableA AS lib_tableA,
SUM(CASE WHEN (SUBSTR(tableB.date,5,2)='01') THEN tableB.date.ca  ELSE  0  END) AS janvier,
SUM(CASE WHEN (SUBSTR(tableB.date,5,2)='02') THEN tableB.date.ca  ELSE  0  END) AS FEVRIER,
SUM(CASE WHEN (SUBSTR(tableB.date,5,2)='03') THEN tableB.date.ca  ELSE  0  END) AS MARS,
SUM(CASE WHEN (SUBSTR(tableB.date,5,2)='04') THEN tableB.date.ca  ELSE  0  END) AS AVRIL,
SUM(CASE WHEN (SUBSTR(tableB.date,5,2)='05') THEN tableB.date.ca  ELSE  0  END) AS  MAI,
SUM(CASE WHEN (SUBSTR(tableB.date,5,2)='06') THEN tableB.date.ca  ELSE  0  END) AS JUIN,
SUM(CASE WHEN (SUBSTR(tableB.date,5,2)='07') THEN tableB.date.ca  ELSE  0  END) AS JUILLET,
SUM(CASE WHEN (SUBSTR(tableB.date,5,2)='08') THEN tableB.date.ca  ELSE  0  END) AS AOUT,
SUM(CASE WHEN (SUBSTR(tableB.date,4,2)='09') THEN tableB.date.ca  ELSE  0  END) AS SEPTEMBRE,
SUM(CASE WHEN (SUBSTR(tableB.date,5,2)='10') THEN tableB.date.ca  ELSE  0  END) AS OCTOBRE,
SUM(CASE WHEN (SUBSTR(tableB.date,5,2)='11') THEN tableB.date.ca  ELSE  0  END) AS NOVEMBRE,
SUM(CASE WHEN (SUBSTR(tableB.date,5,2)='12') THEN tableB.date.ca  ELSE  0  END) AS DECEMBRE,
SUM(tableB.date.ca) AS total
FROM 
tableA,	
tableB
WHERE 
tableB.IDtableA	=	tableA.IDtableA
AND
(
LEFT(tableB.date,4) = {Param1}
)
GROUP BY 
tableA.lib_tableA
ps:avec l’éditeur d’état de windev j'ai eu quelques difficultés à obtenir les date(mois) en lettre