DISTINCT d'un champ combiné avec CASE WHEN
Bonjour,
j'aurais encore besoin d'un petit coup de pouce pour regrouper 3 requêtes, les voici :
Code:
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 COUNT(DISTINCT ENTETE) AS arriv_sda
FROM ERREUR INNER JOIN FIC
ON ERREUR.COD = FIC.COD
WHERE ENTETE <> ''
AND DAT > '2010-04-01 00:00:00'
AND DAT < '2010-04-30 00:00:00'
AND ERREUR.COD = 'EBK';
SELECT COUNT(DISTINCT ENTETE) AS inst_sda
FROM ERREUR INNER JOIN FIC
ON ERREUR.COD = FIC.COD
WHERE ENTETE <> ''
AND DAT > '2010-04-01 00:00:00'
AND DAT < '2010-04-30 00:00:00'
AND ERREUR.COD = 'EBK'
AND ERREUR.DAT_RES IS NULL;
SELECT COUNT(DISTINCT ENTETE) AS trt_sda
FROM ERREUR INNER JOIN FIC
ON ERREUR.COD = FIC.COD
WHERE ENTETE <> ''
AND DAT > '2010-04-01 00:00:00'
AND DAT < '2010-04-30 00:00:00'
AND ERREUR.COD = 'EBK'
AND ERREUR.DAT_TRT IS NOT NULL
AND ERREUR.DAT_RES IS NULL; |
j'ai essayé ceci :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| SELECT COUNT( * ) AS ARRIV_SDA,
COUNT(CASE WHEN ERREUR.DAT_RES IS NULL THEN 1 END)
AS INST_SDA,
COUNT(CASE
WHEN ERREUR.DAT_TRT IS NOT NULL
AND ERREUR.DAT_RES IS NULL
THEN
1
END)
AS TRT_SDA
FROM ERREUR INNER JOIN FIC
ON ERREUR.COD = FIC.COD
WHERE ENTETE <> ''
AND DAT > '2010-04-01 00:00:00'
AND DAT < '2010-04-30 00:00:00'
AND COD = 'EBK'; |
mais évidemment ça ne me donne pas les bons résultats car mes 3 requêtes font un COUNT(DISTINCT ...) d'un champ en particulier.
quelqu'un a une idée ? Merci !