0
votes

Utilisation d'une colonne dynamique dans la clause WHERE d'une instruction SELECT

J'ai cette requête: xxx

et je reçois une erreur:

Nom de colonne invalide 'orderlocation'

La requête suivante fonctionne bien et fait ce qui est destiné à: xxx

réaliste, ce n'est pas un énorme problème, Mais c'est un peu douloureux de répéter le même texte deux fois et de se rappeler de la mettre à jour dans les deux endroits si elle change. Y a-t-il un meilleur moyen d'écrire cette requête pour qu'il n'y ait pas de répétition? Peut-être utiliser des variables ou quelque chose? Je ne suis pas un expert SQL, je ne suis donc pas sûr d'une meilleure façon d'écrire cela.

Toute aide serait appréciée. Merci d'avance!


1 commentaires

Pourquoi ne pas effectuer une simple jointure gauche


3 Réponses :


3
votes

Vous pouvez déplacer la sous-requête vers le à partir de code>: xxx pré>

si regarder votre code, cela ne serait pas vraiment: p>

SELECT oi.*, --still should be a distinct column list
       o.location,
       ISNULL(oi.location,o.location ) AS OrderLocation
FROM dbo.orderitem oi
     JOIN dbo.[order] O ON o.[id] = oi.OrderIDl --LEFT JOIN if there may not be a row here.


1 commentaires

Suppression de la mine car cela couvre l'option de jointure et s'applique.



1
votes

Pour développer le commentaire de @john Cappelletti. xxx


1 commentaires

ou est un mot-clé réservé.



0
votes

J'utilisais déjà une jointure, mais j'ai simplifié la requête de la question. La requête originale avec la déclaration de cas était xxx

Je n'étais pas au courant des commandes de coalesce ou d'Isnull, cependant. Ils travaillaient parfaitement. J'ai fini par: xxx

merci pour l'aide!


0 commentaires