Requetes SQL : Même table (criteres différents) sur MSQUERY

Jean -  
cyril1982 Messages postés 110 Date d'inscription   Statut Membre Dernière intervention   -
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,



A voir également:

6 réponses

cyril1982 Messages postés 110 Date d'inscription   Statut Membre Dernière intervention   12
 
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.
0
Jean
 
up plz
0
Jean
 
up plz
0
Jean
 
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.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Jean
 
up plz
0
cyril1982 Messages postés 110 Date d'inscription   Statut Membre Dernière intervention   12
 
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)
0