Bonjour,
J'ai une table qui trace les accidents survenus par type d'accident, par date et par site.
ID DATE SITE TYPE
6 2010-12-13 NK 2
7 2010-12-14 VK 2
8 2010-12-15 QN 2
9 2010-12-15 VK 1
10 2010-12-15 FS 2
11 2010-12-16 WU 2
13 2010-12-14 VK 1
Les types 1 sont les accidents avec arrêt de travail, les type 2 sans arrêt de travail
Je veux faire une requête qui me donne par date et par site sur une même ligne le nombre d'accident avec arrêt et le nombre d'accident sans arrêt :
DATE SITE AAA ASA
2010-12-13 NK 0 1
2010-12-14 VK 1 1
2010-12-15 QN 0 1
2010-12-15 VK 1 0
2010-12-15 FS 0 1
2010-12-16 WU 0 1
Mais je n'y arrive pas : soit je fais la requête suivante :
mais ça me renvoie 2 lignes distinctes pour un même site et même date lorsque j'ai les 2 types d'accident (par exemple site VK le 14/12/2010)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 SELECT COUNT(ID) AS AAA, 0 as ASA ,DATE ,SITE FROM FAIT_ACCIDENT WHERE TYPE = 1 GROUP BY SITE, DATE UNION SELECT 0 as AAA, COUNT(ID) AS ASA ,DATE ,SITE FROM FAIT_ACCIDENT WHERE TYPE= 2 GROUP BY SITE, DATE
soit la requête suivante :
celle ci me génère bien une seule ligne par date et par site mais les nombres d'accidents sont sommés sur chaque ligne (j'ai sur chaque ligne 2 AAA et 5 ASA).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 SELECT DATE, SITE ,(SELECT COUNT(ID) FROM FAIT_ACCIDENT as FF1 WHERE FF1.TYPE = 1 AND FF1.SITE = SITE AND FF1.DATE = DATE ) as AAA ,(SELECT COUNT(ID) FROM FAIT_ACCIDENT as FF2 WHERE TYPE = 2 AND FF2.SITE = SITE AND FF2.DATE = DATE ) as ASA FROM FAIT_ACCIDENT GROUP BY SITE, DATE
help ! je m'en sors pas. (J'ai pensé peut être à faire 2 vue et fusionner ensuite les 2 vues par une jointure mais ça me parait bien compliqué ) Comment faire svp ? merci de votre aide.
Partager