Requetes SQL : Même table (criteres différents) sur MSQUERY
Jean
-
cyril1982 Messages postés 110 Statut Membre -
cyril1982 Messages postés 110 Statut Membre -
Bonjour,
Je possède une base SQL avec une table A et B, Une colonne A1 de A et B1 de B. (Une jointure est faite entre B1 et A2)
Seulement dans MSQUERY, je veux afficher :
Une colonne B1 avec en critères A1 = 1
et une autre colonne B1 avec en critère A1 = 0
J'ai cherché et les fonction UNION et INTERSECT ne passent pas car ça "superpose" au niveau des lignes et non des colonnes.
Pour l'instant j'ai ça ...
SELECT B1 FROM B WHERE B1=A2 AND A1=0
SELECT B1 FROM B WHERE B1=A2 AND A2=0
Comment faire apparaitre ces deux requêtes cote à cote ?
Merci d'avance,
Je possède une base SQL avec une table A et B, Une colonne A1 de A et B1 de B. (Une jointure est faite entre B1 et A2)
Seulement dans MSQUERY, je veux afficher :
Une colonne B1 avec en critères A1 = 1
et une autre colonne B1 avec en critère A1 = 0
J'ai cherché et les fonction UNION et INTERSECT ne passent pas car ça "superpose" au niveau des lignes et non des colonnes.
Pour l'instant j'ai ça ...
SELECT B1 FROM B WHERE B1=A2 AND A1=0
SELECT B1 FROM B WHERE B1=A2 AND A2=0
Comment faire apparaitre ces deux requêtes cote à cote ?
Merci d'avance,
6 réponses
-
Bonjour,
Tu peux utiliser l'instruction conditionnelle case couplée avec max :
SELECT max(case when A1 = 0 then B1 else null end), max(case when A2 = 0 then B1 else null end) FROM B WHERE B1=A2 AND (A1=0 or A2=0)
La clause where (A1 = 0 or A2 = 0) permet de filtrer sur tes deux lignes.
La fonction d'agrégat Max permet de ne te retourner qu'une seule ligne.
Enfin, le case when permet de choisir la ligne à afficher selon la colonne (Retourne null pour l'autre ligne, couplé avec max cela va te retourner la bonne valeur).
J'espère avoir été clair. -
-
-
BOnjour,
Désolé je n'avais pas vu votre réponse,
J'ai commis une erreur dans la requete : en fait c'est plutot ça :
SELECT B1 FROM B WHERE B1=A2 AND A1=0
SELECT B1 FROM B WHERE B1=A2 AND A1=1
La condition varie sur A1. -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
-
Bonjour,
Dans ce cas, il suffit de faire qq modifications :SELECT max(case when A1 = 0 then B1 else null end), max(case when A1 = 1 then B1 else null end) FROM B WHERE B1=A2 AND (A1=0 or A1=1)