ホームページ >データベース >mysql チュートリアル >Oracle 10.2のWHERE句でCASE式列を使用する方法は?
Oracle 10.2 の WHERE 句で CASE 式列を使用する
Oracle 10.2 の WHERE 句で CASE 式列を使用する場合、 CASE 式列が次の場合、エラー「ORA-00904: 無効な識別子」が発生します。クエリではまだ定義されていません。これは、Oracle 10.2 では、WHERE 句が SELECT 句より前に評価されるためです。
解決策 1: クエリを別のクエリで囲む
この制限を克服するには、次のようにします。 CASE 式を定義する別のクエリでクエリを囲むことができます列:
SELECT * FROM ( SELECT ename , job , CASE deptno WHEN 10 THEN 'ACCOUNTS' WHEN 20 THEN 'SALES' ELSE 'UNKNOWN' END AS department FROM emp ) tmp WHERE department = 'SALES';
解決策 2: WHERE 条件で計算を複製する
または、WHERE 条件で CASE 式の計算を複製することもできます:
SELECT ename , job , CASE deptno WHEN 10 THEN 'ACCOUNTS' WHEN 20 THEN 'SALES' ELSE 'UNKNOWN' END AS department FROM emp WHERE CASE deptno WHEN 10 THEN 'ACCOUNTS' WHEN 20 THEN 'SALES' ELSE 'UNKNOWN' END = 'SALES';
簡略化バージョン
部門番号 20 の従業員から営業部門を選択するだけでクエリを簡素化することもできます:
SELECT ename , job , 'SALES' AS department FROM emp WHERE deptno = 20;
以上がOracle 10.2のWHERE句でCASE式列を使用する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。