Utiliser des alias dans les clauses WHERE
Une requête SQL conçue pour afficher le nombre de lignes d'une table qui n'ont pas été récemment mises à jour a rencontré une erreur ORA-00904 en raison de l'utilisation d'un alias dans la clause WHERE. Les utilisateurs recherchent une solution à ce problème sans répéter la fonction complexe DECODE dans la clause WHERE.
L'utilisation d'alias directement dans la clause WHERE n'est pas réalisable car WHERE est exécuté avant SELECT, qui est la dernière étape de l'exécution de la requête. Cependant, vous pouvez utiliser une sous-requête comme solution de contournement :
<code class="language-sql">SELECT * FROM ( SELECT A.identifier , A.name , TO_NUMBER(DECODE( A.month_no , 1, 200803 , 2, 200804 , 3, 200805 , 4, 200806 , 5, 200807 , 6, 200808 , 7, 200809 , 8, 200810 , 9, 200811 , 10, 200812 , 11, 200701 , 12, 200702 , NULL)) as MONTH_NO , TO_NUMBER(TO_CHAR(B.last_update_date, 'YYYYMM')) as UPD_DATE FROM table_a A , table_b B WHERE A.identifier = B.identifier ) AS inner_table WHERE MONTH_NO > UPD_DATE</code>
Cette approche de sous-requête permet effectivement un filtrage basé sur des expressions d'alias sans rencontrer l'erreur initiale.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!