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