Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2438 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [RESOLU]Plusieurs requetes SQL en une seul sous forme de tableau

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[RESOLU]Plusieurs requetes SQL en une seul sous forme de tableau

n°1935352
hazzelthor​n
Payday vador
Posté le 26-10-2009 à 10:03:50  profilanswer
 

Bonjour,
 
Voilà mon pb :) j'ai 4 requêtes SQL qui séparément m'affichent un tableau comme ceci
 
PRIORITE / Support
A              XX
B              YY
C              ZZ
 
 
 
PRIORITE / Intégration
A              XX
B              YY
C              ZZ
 
 
PRIORITE / Dev
A              XX
B              YY
C              ZZ
 
 
PRIORITE / Fin de dossier
A              XX
B              YY
C              ZZ
 
 
Mon but est d'arriver a ceci  
 
 
PRIORITE / Support / Integration / Dev / Fin de Dossier
A              XX            XX             XX         XX
B              YY            YY             YY         YY
C              ZZ            ZZ             ZZ         ZZ
 
 
voila les requêtes pour chacune des colonnes
 
Support :
 
SELECT dbo_r_pri.PriDsc AS Priorité, Count(*) AS Support
FROM (dbo_p_rqt INNER JOIN dbo_r_pri ON dbo_p_rqt.PriInCde=dbo_r_pri.PriInCde) INNER JOIN dbo_r_wrkgrp ON dbo_p_rqt.DstWrkGrpInCde=dbo_r_wrkgrp.WrkGrpInCde
WHERE (((dbo_p_rqt.RqtStsInCde)<>5) AND ((dbo_r_wrkgrp.WrkGrpDsc)="Front Office" Or (dbo_r_wrkgrp.WrkGrpDsc)="Back Office" ) AND ((dbo_r_pri.PriDsc)="B - Gênant mais contournable" Or (dbo_r_pri.PriDsc)="A - Perturbant la production" Or (dbo_r_pri.PriDsc)="C - Evolution à prendre en compte" ))
GROUP BY dbo_r_pri.PriDsc;
 
Integration :  
 
SELECT dbo_r_pri.PriDsc AS Priorité, Count(*) AS Integration
FROM (dbo_p_rqt INNER JOIN dbo_r_pri ON dbo_p_rqt.PriInCde=dbo_r_pri.PriInCde) INNER JOIN dbo_r_wrkgrp ON dbo_p_rqt.DstWrkGrpInCde=dbo_r_wrkgrp.WrkGrpInCde
WHERE (((dbo_p_rqt.RqtStsInCde)<>5) AND ((dbo_r_wrkgrp.WrkGrpDsc)="Documentation" Or (dbo_r_wrkgrp.WrkGrpDsc)="Intégration Road Map" Or (dbo_r_wrkgrp.WrkGrpDsc)="V5 - Intégration Road Map" ) AND ((dbo_r_pri.PriDsc)="B - Gênant mais contournable" Or (dbo_r_pri.PriDsc)="A - Perturbant la production" Or (dbo_r_pri.PriDsc)="C - Evolution à prendre en compte" ))
GROUP BY dbo_r_pri.PriDsc;
 
Dev :  
 
SELECT dbo_r_pri.PriDsc AS Priorité, Count(*) AS Dev
FROM (dbo_p_rqt INNER JOIN dbo_r_pri ON dbo_p_rqt.PriInCde=dbo_r_pri.PriInCde) INNER JOIN dbo_r_wrkgrp ON dbo_p_rqt.DstWrkGrpInCde=dbo_r_wrkgrp.WrkGrpInCde
WHERE (((dbo_p_rqt.RqtStsInCde)<>5) AND ((dbo_r_wrkgrp.WrkGrpDsc)="Intégration" Or (dbo_r_wrkgrp.WrkGrpDsc)="Develo_planifiées" Or (dbo_r_wrkgrp.WrkGrpDsc)="BPM - Intégration" ) AND ((dbo_r_pri.PriDsc)="B - Gênant mais contournable" Or (dbo_r_pri.PriDsc)="A - Perturbant la production" Or (dbo_r_pri.PriDsc)="C - Evolution à prendre en compte" ))
GROUP BY dbo_r_pri.PriDsc;
 
Fin de dossier :  
 
SELECT dbo_r_pri.PriDsc AS Priorité, Count(*) AS [Fin de Dossier]
FROM (dbo_p_rqt INNER JOIN dbo_r_pri ON dbo_p_rqt.PriInCde = dbo_r_pri.PriInCde) INNER JOIN dbo_r_wrkgrp ON dbo_p_rqt.DstWrkGrpInCde = dbo_r_wrkgrp.WrkGrpInCde
WHERE (((dbo_p_rqt.RqtStsInCde)<>5) AND ((dbo_r_wrkgrp.WrkGrpDsc)="V5 - Livraison" Or (dbo_r_wrkgrp.WrkGrpDsc)="V5 - Qualification" Or (dbo_r_wrkgrp.WrkGrpDsc)="Qualification"  
or  (dbo_r_wrkgrp.WrkGrpDsc)="Mise en production" or  (dbo_r_wrkgrp.WrkGrpDsc)="Livraison" or  (dbo_r_wrkgrp.WrkGrpDsc)="BPM - Qualification" )  
AND ((dbo_r_pri.PriDsc)="B - Gênant mais contournable" Or (dbo_r_pri.PriDsc)="A - Perturbant la production" Or (dbo_r_pri.PriDsc)="C - Evolution à prendre en compte" ))
GROUP BY dbo_r_pri.PriDsc;
 
 
 
 
Voilà, j'suis un novice en SQL :/ j'considère un miracle d'être arrivé jusque là, si vos lumières pouvaient m'éclairer ;)


Message édité par hazzelthorn le 28-10-2009 à 10:36:47
mood
Publicité
Posté le 26-10-2009 à 10:03:50  profilanswer
 

n°1935390
hazzelthor​n
Payday vador
Posté le 26-10-2009 à 13:33:14  profilanswer
 

personne a d'idées ?

n°1935400
casimimir
Posté le 26-10-2009 à 14:07:06  profilanswer
 

si deux solutions, soit tu joues avec des union/union all, soit tu gères ca avec le langage qui te sert a présenter les données.

n°1935404
hazzelthor​n
Payday vador
Posté le 26-10-2009 à 14:30:01  profilanswer
 

union ou union all marchera pas, ptet faire des alias de ma table dbo_r_wrkgrp car j'applique mes conditions sur cette table la a chaque fois.
 
Sauf que la syntaxe pour faire des alias de table ben je sais pas faire :s

n°1935410
cgo2
Dum spiro spero
Posté le 26-10-2009 à 14:39:50  profilanswer
 

Tu pourrais donner le schéma de ta base et expliquer ce que tu veux obtenir en français ? Parce que là pour être honnête je trouve tes requêtes SQL difficilement lisible, et je ne comprend pas ce que tu essayes de faire.


---------------
When it's from Finland it's good.  - Mon blog
n°1935414
casimimir
Posté le 26-10-2009 à 14:50:49  profilanswer
 

tu seras gentil de me dire pourquoi un union all ne marcherait pas, parce que pour moi il n'y a qu'a unioner tes 4 requêtes, sur-selecter pour ré-appliquer un group by, et passer au taf suivant

n°1935417
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 26-10-2009 à 15:02:48  profilanswer
 

de toute façon, le SQL ne sert qu'à extraire les données, et pas à les présenter. ça c'est le boulot du langage client. va bien falloir finir par comprendre (et tu n'es pas le seul, rassure toi) qu'un SGBD c'est pas Excel.


---------------
J'ai un string dans l'array (Paris Hilton)
n°1935418
cgo2
Dum spiro spero
Posté le 26-10-2009 à 15:07:10  profilanswer
 

casimimir a écrit :

tu seras gentil de me dire pourquoi un union all ne marcherait pas, parce que pour moi il n'y a qu'a unioner tes 4 requêtes, sur-selecter pour ré-appliquer un group by, et passer au taf suivant


 
Un UNION va te mettre les 4 tableaux bout à bout en ligne, là il les veux en colonnes. Comment tu ferais ?


---------------
When it's from Finland it's good.  - Mon blog
n°1935419
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 26-10-2009 à 15:17:42  profilanswer
 

cgo2 a écrit :


 
Un UNION va te mettre les 4 tableaux bout à bout en ligne, là il les veux en colonnes. Comment tu ferais ?


une requête imbuvable avec des jointures dans tous les sens.


---------------
J'ai un string dans l'array (Paris Hilton)
n°1935420
hazzelthor​n
Payday vador
Posté le 26-10-2009 à 15:18:13  profilanswer
 

Citation :


 
Un UNION va te mettre les 4 tableaux bout à bout en ligne, là il les veux en colonnes. Comment tu ferais ?


 
voilà mon pb ><, la j'essaye crystal report pour la mise en forme, mon maitre d'apprentissage est gentil :d

Message cité 1 fois
Message édité par hazzelthorn le 26-10-2009 à 15:18:24
mood
Publicité
Posté le 26-10-2009 à 15:18:13  profilanswer
 

n°1935423
hazzelthor​n
Payday vador
Posté le 26-10-2009 à 15:21:47  profilanswer
 

Citation :


une requête imbuvable avec des jointures dans tous les sens.


 
du genre ?  

n°1935424
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 26-10-2009 à 15:23:36  profilanswer
 

hazzelthorn a écrit :

Citation :


 
Un UNION va te mettre les 4 tableaux bout à bout en ligne, là il les veux en colonnes. Comment tu ferais ?


 
voilà mon pb ><, la j'essaye crystal report pour la mise en forme, mon maitre d'apprentissage est gentil :d


non mais sinon, ton problème est très simple à résoudre hein !  
tu fais un gros SELECT de l'ensemble des champs présents dans tes requêtes FROM (tables de la clause FROM de la req 1) INNER JOIN (tables de la clause FROM de la req 2) ON (champs communs) INNER JOIN (tables de la clause FROM de la req 3)....
ça va donner un truc parfaitement lent et illisible, mais ça marchera.


---------------
J'ai un string dans l'array (Paris Hilton)
n°1935426
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 26-10-2009 à 15:26:43  profilanswer
 

hazzelthorn a écrit :

Citation :


une requête imbuvable avec des jointures dans tous les sens.


 
du genre ?  


du genre que UNION permet de fusionner 2 recordsets dans le sens vertical. or toi, tu veux une fusion dans le sens horizontal. donc ça passe par des jointures entres tes différentes requêtes. lesquelles requêtes comportent déjà des jointures. donc tu vas être obligé de faire des jointures de recordsets déjà constitués de jointures, je te laisse imaginer le souk.
le mieux est donc de laisser tes requêtes telles quelles, et de les retraiter séparément dans le langage client


---------------
J'ai un string dans l'array (Paris Hilton)
n°1935429
hazzelthor​n
Payday vador
Posté le 26-10-2009 à 15:28:15  profilanswer
 

et créer des alias de ma table ou j'éxécute mes conditions  ca peut pas marcher ?  car mon problème se situe à ce niveau la, j'ai une seule table où mes conditions changent...  


Message édité par hazzelthorn le 26-10-2009 à 15:28:48
n°1935431
cgo2
Dum spiro spero
Posté le 26-10-2009 à 15:33:33  profilanswer
 

Harkonnen a écrit :

du genre que UNION permet de fusionner 2 recordsets dans le sens vertical. or toi, tu veux une fusion dans le sens horizontal. donc ça passe par des jointures entres tes différentes requêtes. lesquelles requêtes comportent déjà des jointures. donc tu vas être obligé de faire des jointures de recordsets déjà constitués de jointures, je te laisse imaginer le souk.
le mieux est donc de laisser tes requêtes telles quelles, et de les retraiter séparément dans le langage client


 
C'est tout à fait vrai, sauf que dans certains cas (notamment les COUNT, dont il est question ici) il est possible de réécrire *proprement* toute la requête pour obtenir ce qu'il veut sans avoir un truc complètement moisi niveau performances et lisibilité. Je sais si c'est possible là, et c'est pour ça que je demandais un schéma de la table et une explication en français, parce que j'ai pas envie de passer 2 heures à tenter de comprendre ces requêtes moches. Mais bon...


---------------
When it's from Finland it's good.  - Mon blog
n°1935434
hazzelthor​n
Payday vador
Posté le 26-10-2009 à 15:37:58  profilanswer
 

un schéma de la table ? que veux tu ?

n°1935448
cgo2
Dum spiro spero
Posté le 26-10-2009 à 15:54:55  profilanswer
 

hazzelthorn a écrit :

un schéma de la table ? que veux tu ?


 
La structure des tables quoi... :o Enfin bon laisse tomber, je vais t'expliquer la méthode dont je parlais, et tu essayeras de voir si ça peut s'appliquer dans ton cas ou pas. Je pense que ça correspond à ce que tu veux faire, mais je peux me tromper.
 
Disons que tu as une table "table", avec les champs "id" et "priorite". Le champs priorité peut prendre 3 valeurs (bas, normal et haut), et tu veux un resultset comme ça :
 

id | nb_bas | nb_normal | nb_haut


 
L'astuce c'est d'écrire une requête comme ça :
 


select id, count(priorite = 'bas' or null) as nb_bas, count(priorite = 'normal' or null) as nb_normal, count(priorite = 'haut' or null) as nb_haut
from table;


 
ou comme ça (c'est equivalent) :
 


select id, sum(if(priorite = 'bas',1,0)) as nb_bas, sum(if(priorite = 'normal'),1,0)) as nb_normal, count(if(priorite = 'haut'),1,0) as nb_haut
from table;


 
Vu que tu fais toutes tes requêtes sur les même tables, avec seulement les conditions qui changent, je pense que cette technique peut fonctionner. L'idée c'est de mettre les conditions dans le SELECT et non dans le WHERE.


---------------
When it's from Finland it's good.  - Mon blog
n°1935482
casimimir
Posté le 26-10-2009 à 16:58:43  profilanswer
 

cgo2 a écrit :


 
Un UNION va te mettre les 4 tableaux bout à bout en ligne, là il les veux en colonnes. Comment tu ferais ?


 

Harkonnen a écrit :


une requête imbuvable avec des jointures dans tous les sens.


 
 
je ferai comme ca, et je suis d'accord que c'est moche, mais en sql sans connaitre son modèle de donnée et sans avoir envie de s'y plonger je ne ferai pas mieux pour que son truc marche en 30 secs (le temps de copier/coller comme un porc), maintenant effectivement c'est le rôle du langage de présentation a afficher.
Après faut pas s'attendre a être engagé la après ton stage :)
 

Code :
  1. SELECT priorité,
  2.     sum(support) AS support,
  3.     sum(integration AS integration),
  4.     sum(dev) AS dev,
  5.     sum(fin_de_dossier) AS fin_de_dossier
  6. (SELECT dbo_r_pri.PriDsc AS Priorité, Count(*) AS Support,0 AS integration,0 AS dev,0 AS fin_de_dossier
  7. FROM (dbo_p_rqt INNER JOIN dbo_r_pri ON dbo_p_rqt.PriInCde=dbo_r_pri.PriInCde) INNER JOIN dbo_r_wrkgrp ON dbo_p_rqt.DstWrkGrpInCde=dbo_r_wrkgrp.WrkGrpInCde
  8. WHERE (((dbo_p_rqt.RqtStsInCde)<>5) AND ((dbo_r_wrkgrp.WrkGrpDsc)="Front Office" OR (dbo_r_wrkgrp.WrkGrpDsc)="Back Office" ) AND ((dbo_r_pri.PriDsc)="B - Gênant mais contournable" OR (dbo_r_pri.PriDsc)="A - Perturbant la production" OR (dbo_r_pri.PriDsc)="C - Evolution à prendre en compte" ))
  9. GROUP BY dbo_r_pri.PriDsc
  10. union ALL
  11. SELECT dbo_r_pri.PriDsc AS Priorité,0, Count(*) AS Integration,0,0
  12. FROM (dbo_p_rqt INNER JOIN dbo_r_pri ON dbo_p_rqt.PriInCde=dbo_r_pri.PriInCde) INNER JOIN dbo_r_wrkgrp ON dbo_p_rqt.DstWrkGrpInCde=dbo_r_wrkgrp.WrkGrpInCde
  13. WHERE (((dbo_p_rqt.RqtStsInCde)<>5) AND ((dbo_r_wrkgrp.WrkGrpDsc)="Documentation" OR (dbo_r_wrkgrp.WrkGrpDsc)="Intégration Road Map" OR (dbo_r_wrkgrp.WrkGrpDsc)="V5 - Intégration Road Map" ) AND ((dbo_r_pri.PriDsc)="B - Gênant mais contournable" OR (dbo_r_pri.PriDsc)="A - Perturbant la production" OR (dbo_r_pri.PriDsc)="C - Evolution à prendre en compte" ))
  14. GROUP BY dbo_r_pri.PriDsc
  15. union ALL
  16. SELECT dbo_r_pri.PriDsc AS Priorité,0,0, Count(*) AS Dev,0
  17. FROM (dbo_p_rqt INNER JOIN dbo_r_pri ON dbo_p_rqt.PriInCde=dbo_r_pri.PriInCde) INNER JOIN dbo_r_wrkgrp ON dbo_p_rqt.DstWrkGrpInCde=dbo_r_wrkgrp.WrkGrpInCde
  18. WHERE (((dbo_p_rqt.RqtStsInCde)<>5) AND ((dbo_r_wrkgrp.WrkGrpDsc)="Intégration" OR (dbo_r_wrkgrp.WrkGrpDsc)="Develo_planifiées" OR (dbo_r_wrkgrp.WrkGrpDsc)="BPM - Intégration" ) AND ((dbo_r_pri.PriDsc)="B - Gênant mais contournable" OR (dbo_r_pri.PriDsc)="A - Perturbant la production" OR (dbo_r_pri.PriDsc)="C - Evolution à prendre en compte" ))
  19. GROUP BY dbo_r_pri.PriDsc
  20. union ALL
  21. SELECT dbo_r_pri.PriDsc AS Priorité,0,0,0, Count(*) AS [Fin de Dossier]
  22. FROM (dbo_p_rqt INNER JOIN dbo_r_pri ON dbo_p_rqt.PriInCde = dbo_r_pri.PriInCde) INNER JOIN dbo_r_wrkgrp ON dbo_p_rqt.DstWrkGrpInCde = dbo_r_wrkgrp.WrkGrpInCde
  23. WHERE (((dbo_p_rqt.RqtStsInCde)<>5) AND ((dbo_r_wrkgrp.WrkGrpDsc)="V5 - Livraison" OR (dbo_r_wrkgrp.WrkGrpDsc)="V5 - Qualification" OR (dbo_r_wrkgrp.WrkGrpDsc)="Qualification"  
  24. OR  (dbo_r_wrkgrp.WrkGrpDsc)="Mise en production" OR  (dbo_r_wrkgrp.WrkGrpDsc)="Livraison" OR  (dbo_r_wrkgrp.WrkGrpDsc)="BPM - Qualification" )  
  25. AND ((dbo_r_pri.PriDsc)="B - Gênant mais contournable" OR (dbo_r_pri.PriDsc)="A - Perturbant la production" OR (dbo_r_pri.PriDsc)="C - Evolution à prendre en compte" ))
  26. GROUP BY dbo_r_pri.PriDsc)
  27. GROUP BY priorité


n°1935483
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 26-10-2009 à 17:01:51  profilanswer
 

c'est encore pîre que ce que je croyais [:psywalk]


Message édité par Harkonnen le 26-10-2009 à 17:02:09

---------------
J'ai un string dans l'array (Paris Hilton)
n°1935496
cgo2
Dum spiro spero
Posté le 26-10-2009 à 17:38:29  profilanswer
 

[:prozac]


---------------
When it's from Finland it's good.  - Mon blog
n°1935506
casimimir
Posté le 26-10-2009 à 17:54:41  profilanswer
 

bonbonbon, en passant 5 mins a comprendre on tombe finalement la dessus, mais 5mins vs 30 secs quoi...
 
je sais pas si le case est syntaxiquement correct en mssql
 

Code :
  1. SELECT dbo_r_pri.PriDsc AS Priorité,
  2.       sum(case when dbo_r_wrkgrp.WrkGrpDsc) IN ("Front Office","Back Office" ) then 1 else 0 end) AS  support,
  3.     sum(case when dbo_r_wrkgrp.WrkGrpDsc) IN ("Documentation","Intégration Road Map","V5 - Intégration Road Map"  then 1 else 0 end) AS intégration,
  4.     sum(case when dbo_r_wrkgrp.WrkGrpDsc) IN ("Intégration","Develo_planifiées","BPM - Intégration" ) then 1 else 0 end) AS dev,
  5.     sum(case when dbo_r_wrkgrp.WrkGrpDsc) IN ("V5 - Livraison","V5 - Qualification","Qualification","Mise en production","Livraison","BPM - Qualification" ) then 1 else 0 end) AS fin_de_dossier
  6. FROM (dbo_p_rqt
  7. INNER JOIN dbo_r_pri ON dbo_p_rqt.PriInCde = dbo_r_pri.PriInCde)
  8. INNER JOIN dbo_r_wrkgrp ON dbo_p_rqt.DstWrkGrpInCde = dbo_r_wrkgrp.WrkGrpInCde
  9. WHERE (((dbo_p_rqt.RqtStsInCde)<>5)
  10. AND  ((dbo_r_pri.PriDsc) IN ("B - Gênant mais contournable","A - Perturbant la production","C - Evolution à prendre en compte" )))
  11. GROUP BY dbo_r_pri.PriDsc)

n°1935530
hazzelthor​n
Payday vador
Posté le 26-10-2009 à 19:25:25  profilanswer
 

et bien vous savez quoi, je vous remercie, étant étudiant en BTS IG en alternance et novice en SQL j'apprends petit a petit, le but de mon maitre d'apprentissage étant de me faire comprendre la logique du langage SQL :)

 

merci casimimir, cgo2 et harkonnen  mon maitre d'apprentissage ayant lu vos commentaires m'a bien fait comprendre qu'il y avait plusieurs façons d'arriver au résultat qu'il me demandait.

 

Vos réponses sont très instructives !!

 

Merci,

 

(je n'ai pas encore pu tester vos solutions, je vous tiens au courant demain)


Message édité par hazzelthorn le 26-10-2009 à 19:26:05
n°1935618
cgo2
Dum spiro spero
Posté le 27-10-2009 à 10:41:53  profilanswer
 

casimimir a écrit :

bonbonbon, en passant 5 mins a comprendre on tombe finalement la dessus, mais 5mins vs 30 secs quoi...


 
Ah ben voila c'est la méthode à laquelle je pensais, et là la requête est quand même plus jolie. :)


---------------
When it's from Finland it's good.  - Mon blog
n°1935680
hazzelthor​n
Payday vador
Posté le 27-10-2009 à 13:58:58  profilanswer
 

voila la requete sous crystal report (qui soit dit en passant est bien plus intuitif que Acess :d )
 
 
SELECT "p_rqt"."RqtStsInCde", "r_pri"."PriExCde", "r_pri"."PriDsc", "r_wrkgrp"."WrkGrpInCde"
 
FROM   "absyss_test"."dbo"."r_wrkgrp" "r_wrkgrp"  
INNER JOIN ("absyss_test"."dbo"."r_pri" "r_pri"  
INNER JOIN "absyss_test"."dbo"."p_rqt" "p_rqt" ON "r_pri"."PriInCde"="p_rqt"."PriInCde" )  
ON "r_wrkgrp"."WrkGrpInCde"="p_rqt"."DstWrkGrpInCde"
 
 
WHERE  "p_rqt"."RqtStsInCde"<>5  
AND ("r_pri"."PriDsc"='A - Perturbant la production'  
OR "r_pri"."PriDsc"='B - Gênant mais contournable'  
OR "r_pri"."PriDsc"='C - Evolution à prendre en compte')  
AND  NOT ("r_wrkgrp"."WrkGrpInCde"=1  
OR "r_wrkgrp"."WrkGrpInCde"=2  
OR "r_wrkgrp"."WrkGrpInCde"=5  
OR "r_wrkgrp"."WrkGrpInCde"=10  
OR "r_wrkgrp"."WrkGrpInCde"=11  
OR "r_wrkgrp"."WrkGrpInCde"=13  
OR "r_wrkgrp"."WrkGrpInCde"=14  
OR "r_wrkgrp"."WrkGrpInCde"=15  
OR "r_wrkgrp"."WrkGrpInCde"=17  
OR "r_wrkgrp"."WrkGrpInCde"=18  
OR "r_wrkgrp"."WrkGrpInCde"=20  
OR "r_wrkgrp"."WrkGrpInCde"=22  
OR "r_wrkgrp"."WrkGrpInCde"=23  
OR "r_wrkgrp"."WrkGrpInCde"=24  
OR "r_wrkgrp"."WrkGrpInCde"=26  
OR "r_wrkgrp"."WrkGrpInCde"=30)
 
 
 
avec le champ de formule suivant sous crystal report pour faire la somme de groupe en travail :)
 
if {r_wrkgrp.WrkGrpInCde} in [3,4] then 'Support'  
else if {r_wrkgrp.WrkGrpInCde} in [8,28,29] then 'Intégration'  
else if {r_wrkgrp.WrkGrpInCde} in [9,19,27] then 'Dev'  
else if {r_wrkgrp.WrkGrpInCde} in [16,21,6,12,7,25] then 'Fin de Dossier'
 
 
 
merci a vous tous de votre aide j'ai appris beaucoup de choses :)


Message édité par hazzelthorn le 27-10-2009 à 14:00:13
n°1936634
fort en fr​uits
The king of cool
Posté le 30-10-2009 à 21:52:34  profilanswer
 

Non,
 
il faut faire un case. Voilà un exemple :
http://www.adp-gmbh.ch/ora/sql/examples/pivot.html
 
Il fonctionne parfaitement, je m'en sers au boulot pour par exemple afficher des rubriques dans la colonne de gauche en lieu et place de tes PRIORITE, et des soldes sur différentes périodes comptables en haut.
 
:jap:


---------------
Like a flower bending in the breeze, bend with me, sway with ease. When we dance you have a way with me, stay with me, sway with me.
mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [RESOLU]Plusieurs requetes SQL en une seul sous forme de tableau

 

Sujets relatifs
[SQL] Design table "réseau social"[RESOLU]Modifier la mise en forme selon onClick
[Résolu] JBoss et Virtual HostShell : Découper un fichier en plusieurs fichiers
Problème:boite de dialogue alert() avec chrome+safari - [Résolu]Alternatives à l'iFrame ? (intégrations de sites dans un seul)
[html] Problème sur un formulaire avec plusieurs boutons submit[php/mysql] lancer un programme php en cas d'updates de MySql [resolu]
Plus de sujets relatifs à : [RESOLU]Plusieurs requetes SQL en une seul sous forme de tableau


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR