par
Ish » 24 août 2007, 17:32
Pourquoi ne veux tu pas utiliser la même colonne pour les 2 ?
parcequ'elle ne me renvoit pas le même résultat !!!
Bon ... je me suis creusé la tête, j'ai roublardisé et voilà le résultat. Cela me donne ce que je voulais !!
Code : Tout sélectionner
select * from(
SELECT FINISHDATE, sum(NB_Y1), sum(NB_Y2), sum(DUREE_Y1), sum(DUREE_Y2)
FROM (
(SELECT FINISHDATE, sum(NB_OT) AS NB_Y1, sum(0) AS NB_Y2, sum(DUREE_REAL) AS DUREE_Y1,sum(0) AS DUREE_Y2 FROM (
SELECT TO_CHAR(kp1.FINISHDATE,'YYYY-MM') AS FINISHDATE, kp1.NB_OT,kp1.DUREE_REAL
FROM SDNI.SDNQTKP1 kp1
WHERE kp1.PLANPLANT='CCA1'
AND (kp1.FUNCT_LOC LIKE '?010%')
AND (nvl(kp1.STATUTA1,'Z')<>'ANNU' OR nvl(kp1.STATUTA2,'Z')<>'ANNU' OR nvl(kp1.STATUTA3,'Z')<>'ANNU')
AND (COORD_TYPE IN ('ZURG') AND PMACTTYPE IN ('PAL','CUR'))
AND ( TO_CHAR(kp1.FINISHDATE,'YYYY-MM')>=to_char(to_date('03/01/2006'),'YYYY-MM')
and TO_CHAR(kp1.FINISHDATE,'YYYY-MM')<=to_char(to_date('31/07/2008'),'YYYY-MM') )
) GROUP BY FINISHDATE)
UNION
(SELECT FINISHDATE, sum(0) AS NB_Y1,sum(NB_OT) AS NB_Y2, sum(0) AS DUREE_Y1,sum(DUREE_REAL) AS DUREE_Y2 FROM (
SELECT TO_CHAR(kp1.FINISHDATE,'YYYY-MM') AS FINISHDATE, kp1.NB_OT , kp1.DUREE_REAL
FROM SDNI.SDNQTKP1 kp1
WHERE kp1.PLANPLANT='CCA1'
AND (kp1.FUNCT_LOC LIKE '?010%')
AND (nvl(kp1.STATUTA1,'Z')<>'ANNU' OR nvl(kp1.STATUTA2,'Z')<>'ANNU' OR nvl(kp1.STATUTA3,'Z')<>'ANNU')
AND (COORD_TYPE IN ('ZPRE','ZREG') AND PMACTTYPE IN ('SYS','CON','PRE','ESY'))
AND ( TO_CHAR(kp1.FINISHDATE,'YYYY-MM')>=to_char(to_date('03/01/2006'),'YYYY-MM')
and TO_CHAR(kp1.FINISHDATE,'YYYY-MM')<=to_char(to_date('31/07/2008'),'YYYY-MM') )
) GROUP BY FINISHDATE)
)
group by FINISHDATE
ORDER BY FINISHDATE
)
WHERE ROWNUM <= 10
En fait je fais une union deux requête, puis je fais une sum de colonne Group by la date ...
Là où j'ai roublardisé .. c'est que dans ma première requête .. je met Nb_Y2 à 0 et DUREE_Y2 à 0 .... et vice versa ... dans la deuxième requête, j'ai mis NB_Y1 à 0 et DUREE_Y1 à 0 ... donc forcement quand je sum ... j'ai bien mes dates avec les bonnes valeurs !!
Je voulais faire ça car les utilisateurs de mon application m'ont demandé de pouvoir saisir des paramètre commun aux deux requêtes et des 'nature d'activité' différente ...
pour afficher un graphique (grâce à JPGraph ... je suis devenu un pro

) .... ou pour un mois en axis j'ai deux barres (NB_Y1 et NB_Y2 ... ou la durée (choisis en paramètre) ) ... puis faire une courbe sur du Ration entre Y1 et Y2 ...
C'est que c'est relou un utilisateur !!!
[quote="Sékiltoyai"]Pourquoi ne veux tu pas utiliser la même colonne pour les 2 ?[/quote]
parcequ'elle ne me renvoit pas le même résultat !!!
Bon ... je me suis creusé la tête, j'ai roublardisé et voilà le résultat. Cela me donne ce que je voulais !!
[code]
select * from(
SELECT FINISHDATE, sum(NB_Y1), sum(NB_Y2), sum(DUREE_Y1), sum(DUREE_Y2)
FROM (
(SELECT FINISHDATE, sum(NB_OT) AS NB_Y1, sum(0) AS NB_Y2, sum(DUREE_REAL) AS DUREE_Y1,sum(0) AS DUREE_Y2 FROM (
SELECT TO_CHAR(kp1.FINISHDATE,'YYYY-MM') AS FINISHDATE, kp1.NB_OT,kp1.DUREE_REAL
FROM SDNI.SDNQTKP1 kp1
WHERE kp1.PLANPLANT='CCA1'
AND (kp1.FUNCT_LOC LIKE '?010%')
AND (nvl(kp1.STATUTA1,'Z')<>'ANNU' OR nvl(kp1.STATUTA2,'Z')<>'ANNU' OR nvl(kp1.STATUTA3,'Z')<>'ANNU')
AND (COORD_TYPE IN ('ZURG') AND PMACTTYPE IN ('PAL','CUR'))
AND ( TO_CHAR(kp1.FINISHDATE,'YYYY-MM')>=to_char(to_date('03/01/2006'),'YYYY-MM')
and TO_CHAR(kp1.FINISHDATE,'YYYY-MM')<=to_char(to_date('31/07/2008'),'YYYY-MM') )
) GROUP BY FINISHDATE)
UNION
(SELECT FINISHDATE, sum(0) AS NB_Y1,sum(NB_OT) AS NB_Y2, sum(0) AS DUREE_Y1,sum(DUREE_REAL) AS DUREE_Y2 FROM (
SELECT TO_CHAR(kp1.FINISHDATE,'YYYY-MM') AS FINISHDATE, kp1.NB_OT , kp1.DUREE_REAL
FROM SDNI.SDNQTKP1 kp1
WHERE kp1.PLANPLANT='CCA1'
AND (kp1.FUNCT_LOC LIKE '?010%')
AND (nvl(kp1.STATUTA1,'Z')<>'ANNU' OR nvl(kp1.STATUTA2,'Z')<>'ANNU' OR nvl(kp1.STATUTA3,'Z')<>'ANNU')
AND (COORD_TYPE IN ('ZPRE','ZREG') AND PMACTTYPE IN ('SYS','CON','PRE','ESY'))
AND ( TO_CHAR(kp1.FINISHDATE,'YYYY-MM')>=to_char(to_date('03/01/2006'),'YYYY-MM')
and TO_CHAR(kp1.FINISHDATE,'YYYY-MM')<=to_char(to_date('31/07/2008'),'YYYY-MM') )
) GROUP BY FINISHDATE)
)
group by FINISHDATE
ORDER BY FINISHDATE
)
WHERE ROWNUM <= 10
[/code]
En fait je fais une union deux requête, puis je fais une sum de colonne Group by la date ...
Là où j'ai roublardisé .. c'est que dans ma première requête .. je met Nb_Y2 à 0 et DUREE_Y2 à 0 .... et vice versa ... dans la deuxième requête, j'ai mis NB_Y1 à 0 et DUREE_Y1 à 0 ... donc forcement quand je sum ... j'ai bien mes dates avec les bonnes valeurs !!
Je voulais faire ça car les utilisateurs de mon application m'ont demandé de pouvoir saisir des paramètre commun aux deux requêtes et des 'nature d'activité' différente ...
pour afficher un graphique (grâce à JPGraph ... je suis devenu un pro ;-) ) .... ou pour un mois en axis j'ai deux barres (NB_Y1 et NB_Y2 ... ou la durée (choisis en paramètre) ) ... puis faire une courbe sur du Ration entre Y1 et Y2 ...
[img]http://www.123trouvez.lu/loveWimax/restit_108.jpeg[/img]
C'est que c'est relou un utilisateur !!!