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

Jean -  
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,

6 réponses

  1. cyril1982 Messages postés 110 Statut Membre 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
  2. 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
  3. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  4. cyril1982 Messages postés 110 Statut Membre 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