Précédent   Forum des professionnels en informatique > Bases de données > PostgreSQL
PostgreSQL Forum PostgreSQL. Avant de poster -> F.A.Q PostGreSQL Tutoriels PostGreSQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 11/06/2007, 22h16   #1
Invité régulier
 
Inscription : mars 2007
Messages : 10
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 10
Points : 5
Points : 5
Par défaut create a new table B from data coming from a table A

Bonjour,

j'ai une table comme ça:

Id A1 A2 A3 Nbre
1234 1 0 0 3
1234 1 0 1 2
1234 1 1 1 5
1235 1 0 0 6
1235 1 0 1 7
1235 1 1 1 8

à partir des données de la table précedente je veux créer une autre comme ça:

Id B1 B2 B3 somme
1234 3 2 5 10
1235 6 7 8 21

c'est - à - dire:
la combinaison (A1=1,A2=0,A3=0) me donne le type B1
la combinaison (A1=1,A2=0,A3=1) me donne le type B2
la combinaison (A1=1,A2=1,A3=1) me donne le type B3

Merci de vos aides :-). (j'arrive pas à voir l'astuce)
Dev_ps est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/06/2007, 10h44   #2
Membre éclairé
 
Avatar de icer
 
Inscription : janvier 2006
Messages : 332
Détails du profil
Informations forums :
Inscription : janvier 2006
Messages : 332
Points : 308
Points : 308
J'ai du mal à comprendre ce que tu veux faire...
icer est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/06/2007, 11h12   #3
Invité régulier
 
Inscription : mars 2007
Messages : 10
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 10
Points : 5
Points : 5
Ok j'ai résolu mon problème

test=*# select * from tab_a;
id | a1 | a2 | a3 | cnt
------+----+----+----+-----
1234 | 1 | 0 | 0 | 4
1234 | 1 | 0 | 1 | 8
1234 | 1 | 1 | 1 | 5
1235 | 1 | 0 | 0 | 6
1235 | 1 | 0 | 1 | 7
1235 | 1 | 1 | 1 | 12
(6 rows)

test=*# select id, b1,b2,b3, sum(b1+b2+b3) as s from (select id,
sum(case when a1=1 and a2=0 and a3=0 then cnt else 0 end) as b1,
sum(case when a1=1 and a2=0 and a3=1 then cnt else 0 end) as b2,
sum(case when a1=1 and a2=1 and a3=1 then cnt else 0 end) as b3 from
tab_a group by id order by id) foo group by id, b1, b2, b3 order by id;
id | b1 | b2 | b3 | s
------+----+----+----+----
1234 | 4 | 8 | 5 | 17
1235 | 6 | 7 | 12 | 25
(2 rows)
Dev_ps est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/06/2007, 11h31   #4
Membre actif
 
Avatar de budtucker
 
Développeur multimédia
Inscription : avril 2007
Messages : 175
Détails du profil
Informations professionnelles :
Activité : Développeur multimédia

Informations forums :
Inscription : avril 2007
Messages : 175
Points : 174
Points : 174
Même avec la réponse, j'ai du mal à cerner ce que tu veux faire. Mais si tu y es arrivé, tant mieux !!!!

Bravo !!
budtucker est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/06/2007, 12h04   #5
Membre éclairé
 
Avatar de icer
 
Inscription : janvier 2006
Messages : 332
Détails du profil
Informations forums :
Inscription : janvier 2006
Messages : 332
Points : 308
Points : 308
Citation:
Même avec la réponse, j'ai du mal à cerner ce que tu veux faire. Mais si tu y es arrivé, tant mieux !!!!
+ 1

8o ??
icer est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 14h37.


 
 
 
 
Partenaires

Hébergement Web