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

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. 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
    1. 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
      1. 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