Co Lumn3 n'est référencé nulle part en dehors des blocs IF
et ELSE
. Si vous souhaitez référencer cette valeur, vous devrez déclarer une nouvelle variable et l'utiliser;
DECLARE @btColumn3 BIT
SELECT @btColumn3 = Column3 FROM @tblTableA
IF @btColumn3 = 0
SELECT Column1, Column2 FROM
@tblTableA WHERE
Column2 > 200
ELSE
SELECT Column1, Column2 FROM
@tblTableA WHERE
Column2 < 200
Ou procédez comme suit;
IF (SELECT Column3 FROM @tblTableA) = 0
SELECT Column1, Column2 FROM
@tblTableA WHERE
Column2 > 200
ELSE
SELECT Column1, Column2 FROM
@tblTableA WHERE
Column2 < 200
De toute façon, vous devez vous assurer que la requête utilisée pour récupérer Colonne3 retourne un seul résultat, soit en limitant votre requête afin qu'il ne peut renvoyer une valeur unique ou à l'aide MIN()
, MAX()
etc en fonction de vos besoins.
En outre, si vous avez besoin d'exécuter plus d'une requête dans les IF
et ELSE
blocs que vous aurez besoin d'envelopper le contenu dans BEGIN
et END
comme suit:
IF @btColumn3 = 0
BEGIN
// Do a query
// Do another
END
ELSE
BEGIN
// Do a query
// Do another
END
'Select @Temp = Co lumn3 De TableA' échouera s'il y a plus d'une rangée dans la table. – Oded
C'est pourquoi j'ai dit en bas "Evidemment, cela suppose qu'il n'y aura qu'une seule valeur retournée pour Colonne3.". J'ai ajouté une solution différente à ma réponse. – codingbadger