J'ai une très longue déclaration SQL qui a le squelette suivant (utilisant SQL Server 2005) :
SELECT
a.something AS Something,
b.otherthing AS Otherthing,
(SELECT another FROM ... WHERE...) AS Importantvariable,
....
FROM...
INNER JOIN...
INNER JOIN...
WHERE a.columnname = (SELECT another FROM ... WHERE...) ....
Cet Importantvariable
est une requête très longue en soi. Cependant, il est utilisé dans d'autres parties de la même requête, y compris la clause WHERE
et les clauses INNER JOIN
. Ma question est, comment puis-je sauvegarder sa valeur pour ne pas avoir à écrire la requête complète à chaque fois. Dans cet exemple ci-dessus, je voudrais taper a.columnname = Importantvariable
au lieu de toute la requête. J'ai essayé d'utiliser DECLARE
et de sauvegarder la valeur dans une variable déclarée mais cela ne me le permet pas avec l'erreur suivante :
Une déclaration SELECT qui attribue une valeur à une variable ne doit pas être combinée avec une opération de récupération de données.
Évidemment, cela a du sens mais mon objectif est de réaliser une récupération de données, je ne veux simplement pas copier et coller la très longue requête qui définit le Importantvariable
à plusieurs endroits différents dans la requête. Des idées ?