Requête avec if/in - regrouper différentes colonnes

Fermé
iamnotturing - Modifié le 4 févr. 2023 à 20:57
jordane45 Messages postés 38148 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 29 avril 2024 - 4 févr. 2023 à 22:50

Bonjour 

J'ai la table 'matable' qui contient:

colonne	cle
101	a
102	b
103	b
10	a
11	b
42	portnawak
1	k
102	k

Je souhaite

- filtrer les donnees dont une clé est commune à 101,102 ou 103

- indiquer si c'est 101 ou 103 dans x ; 102 dans y

Note: c'est un exemple simplifié. En réalité, j'ai 5 critères donc 5 colonnes v, w, x, y, z

J'effectue cette requête

select t2.colonne
, if ( t1.colonne in (101 , 103) , 1 , 0 ) x
, if ( t1.colonne in (102) , 1 , 0) y
FROM matable t1
inner join matable t2
on t1.cle = t2.cle and t2.colonne not in ( 101 , 102 , 103 )
where t1.colonne in ( 101 , 102 , 103 )

J'obtiens

colonne	x	y
1	0	1
10	1	0
11	1	0
11	0	1

Je souhaite obtenir

colonne	x	y
1	0	1
10	1	0
11	1	1

Comment faire svp?

Merci d'avance.

1 réponse

jordane45 Messages postés 38148 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 29 avril 2024 4 651
4 févr. 2023 à 22:50

Bonjour,

Sans trop avoir regardé ..  essaye d'ajouter un SUM sur tes colonnes x et Y  et un GROUP BY sur ta colonne 

t1.colonne

1