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

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Mettre des lignes en colonnes

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Mettre des lignes en colonnes

n°1480546
polo021
Posté le 23-11-2006 à 12:12:25  profilanswer
 

Bonjour, je suis sous DB2 et j'ai une table comme suit :
 
Table1.
ID    TYPE
A       1
A       2
B       1
 
J'aimerai faire une requete qui me donne le résultat suivant :
ID    FlagType1    FlagType2
A        OUI             OUI              -> car l'ID A fait partie du type 1 et du type 2
B        OUI             NON             -> car l'ID B fait partie dy type 1 mais pas du type 2
 
C'est pour faire une vue au final.
 
Merci pour votre aide

mood
Publicité
Posté le 23-11-2006 à 12:12:25  profilanswer
 

n°1480565
chepa_jeml​s
Posté le 23-11-2006 à 12:28:49  profilanswer
 

je serais toi, je ferai un select avec order by ID et un tri sur type.
 
Comme ça tu auras des lignes comme ça:
A 1
A 2
B 1
C 2
 
Tout n'aura plus que a faire des tests à l'affichage.  Je ne voix pas d'autres solutions

n°1480572
polo021
Posté le 23-11-2006 à 12:48:18  profilanswer
 

Bonjour ami jemellien,
merci pour ta réponse mais je crains qu'elle ne m'aide pas beaucoup :-(
Je dois arriver absolument au résultat que j'avais mis dans ma question.
Voici ce que j'avais essayé :
Select t1.type, t2.type
from table t1, table t2
where t1.id = t2.id
and t1.type = 1 and t2.type = 2;
 
mais ca ne fonctionne que si j'ai toujours 2 lignes pour chaque ID. Ensuite pour avoir un OUI ou NON dans ma colonne j'aurai fait un CASE.
 
Est-ce un bon début?

n°1480574
chepa_jeml​s
Posté le 23-11-2006 à 12:53:07  profilanswer
 

je voix pas alors
 
tu étais de jemelle aussi?

n°1480627
polo021
Posté le 23-11-2006 à 13:53:23  profilanswer
 

oui y a 3 ans

n°1480630
chepa_jeml​s
Posté le 23-11-2006 à 13:55:39  profilanswer
 

donc, il se peut que l'on se connaisse! qui es-tu
 
As tu trouvé une solution?  j'ai demandé autour de moi et ils ne voyent pas trop

n°1481044
casimimir
Posté le 23-11-2006 à 23:03:42  profilanswer
 

un truc pas beau mais qui a le merite d'exister a 23h00
 
 
select a.id,nvl(b.flag,'NON'),nvl(c.flag,'NON')
from
(select distinct id
from t1) a,
(select distinct id,'OUI' flag
from t1
where type = 1) b,
(select distinct id,'OUI' flag
from t1
where type = 2) c
 
bon c'est tres moche et sur des enormes tables c'est code tout pourri, mais faut voir ta situation, perso je le ferai sans doute en sql dynamique mais faut voir tes data, puis db2 je n'y connais rien en optimisation.

n°1485244
polo021
Posté le 01-12-2006 à 21:36:50  profilanswer
 

Salut,
j'avais trouvé une solution mais pas trop eu le temps de la poster, je vous fais ca lundi.
chepa, je crois que je vois qui tu es effectivement, MP-moi si tu veux

n°1485248
MagicBuzz
Posté le 01-12-2006 à 22:06:42  profilanswer
 

Regarde si DB2 supporte le "full join".
SQL Server 2005 le supporte maintenant (il était temps, ça fait partie de SQL92 :o)
 
Ce qui donne une requête infiniment plus performante et plus jolie (bon, si on veut) :


select * from table_1;
 
select  
 isnull(t1.id, t2.id) id,  
 case isnull(t1.type, 0)  
  when 0 then 'NON'  
  else 'OUI'  
 end type1,  
 case isnull(t2.type, 0)  
  when 0 then 'NON'  
  else 'OUI'  
 end type2
from table_1 t1
full join table_1 t2 on t2.id = t1.id and t1.type = 1 and t2.type = 2
where isnull(t1.type, 1) = 1
and isnull(t2.type, 2) = 2;


 


id   type
---- ----
A    1
A    2
B    1
C    2
 
(4 row(s) affected)
 
id   type1 type2
---- ----- -----
A    OUI   OUI
B    OUI   NON
C    NON   OUI
 
(3 row(s) affected)

n°1486358
polo021
Posté le 04-12-2006 à 20:57:59  profilanswer
 

Bien joué, très impressionnant.
Oui le FULL_OUTER_JOIN existe en DB2
Merci à toi


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

  Mettre des lignes en colonnes

 

Sujets relatifs
BLACKLIST - LISTE NOIR d'adresse IP à mettre sur vos site internet[RESOLU]Mettre à jour eclipse
[DB2] Supprimer plusieurs millions de lignesmettre au format date 3 variables..
création dynamique de nouvelles colonnes d'un listview[C# .Net] Mettre en commun du code
Coloration de certaines lignes jTablechoix du button radio à mettre dans un caddie
[HTML/CSS/Javascript] Probleme background avec les lignes d'un tableau 
Plus de sujets relatifs à : Mettre des lignes en colonnes


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