Y a-t-il un moyen où nous pourrions interroger en utilisant des alias
Error: DB2 SQL Error: SQLCODE=-206, SQLSTATE=42703, SQLERRMC=AVC, DRIVER=3.63.75 SQLState: 42703 ErrorCode: -206 Error: DB2 SQL Error: SQLCODE=-514, SQLSTATE=26501, SQLERRMC=SQL_CURLH200C1, DRIVER=3.63.75 SQLState: 26501 ErrorCode: -514
3 Réponses :
Vous ne pouvez pas utiliser d'alias dans l'emplacement de la condition car le moteur SQL Evalez la clause de requête (à partir de, où, sélectionnez ...) dans une commande spécifique et la clause SELECT dans l'évaluation après la clause WHERE
. MOMENT DE L'ÉVALUTION D'ÉVALUTION L'ALASS DE LA COLONNE INCUS DANS LE MOTEUR DB P>
Vous devez répéter le code P>
SELECT 'X' AS AVC FROM sysibm.sysdummy1 WHERE X' = 'X'
Vous ne pouvez pas. Ceci est une règle générale de SQL. En pratique, vous pouvez penser à la raison pour laquelle le La solution générale consiste à utiliser un SubQuery ou CTE: P> où code> est analysé avant le
SELECT CODE>, de sorte que les alias ne sont pas connus.
SELECT t.*
FROM (SELECT 'X' AS AVC
FROM sysibm.sysdummy1
) t
WHERE AVC = 'X';
Les requêtes équivalentes suivantes travaillent dans DB2. Sélectionnez T. * À partir du tableau (valeurs ('x', 'y')) T (AVC, AVC2) où avc = 'x'; code> ou
Sélectionnez t. * de latéral (valeurs ('X', 'y')) t (avc, avc2) où avc = 'x'; code>
Le moteur ne connaît pas les alias de table ou de colonne jusqu'à ce qu'il soit fini de rassembler les données. Vous pouvez les utiliser dans Ceci est un peu loin de le faire, mais malheureusement c'est il. p> p> commander par code> instruction dans la même requête, mais c'est tout. Vous pouvez toutefois utiliser un
Expression de table commune code>
également appelée CTE code>: