Hy人、Oracleサブセレクトを使用してCASE文を置き換える
誰でもOracleデータベース10gのサブクエリを手伝ってもらえますか?私は、2番目のテーブルの別の列の値として最初のテーブルの列の値を抽出する必要があります。 私は現在、この文を使用します。
SELECT
CASE WHEN A.column1 = 'A' THEN 'aaa'
WHEN A.column1 = 'B' THEN 'bbb'
.......
WHEN A.column1 = 'X' THEN 'xxx'
ELSE 'bad' END AS COLUMN1, A.*
FROM TRANSACTION_TABLE A, CATEGORY_TABLE B
WHERE A.column1 IS NOT NULL
AND A.column1 <> ' '
これはエレガントなアプローチではありませんので、私は次のようにCATEGORY_TABLE Bから副選択を使用しようとしている:
だから、SELECT A.column1, A.*
FROM TRANSACTION_TABLE A, CATEGORY_TABLE B
WHERE A.column1 IS NOT NULL
AND A.column1 = B.column_b_1
AND A.column1 <> ' '
AND A.column1 IN (SELECT B.column_b_1_descr FROM CATEGORY_TABLE B
WHERE B.FIELDNAME = 'column1' AND A.column1 = B.column_b_1)
、私はいずれかを取得することはできませんサブクエリを使用して結果を得て、多くの条件に対してCASEを使用したくない場合は、読みやすいようにA.column1の値をB.column_b_1_descrの記述的な値に置き換えます。 私はフィードバックをいただければ幸いです。 おかげ
明確にするために、column1が 'A'のときは出力行の「column1」フィールドの文字列「aaa」を、「* aaa」という列の値ではないでしょうか? –