Hy guys,使用Oracle子查詢替換CASE語句
任何人都可以幫我一個Oracle數據庫10g的子查詢嗎?我需要提取第一個表中列的值作爲第二個表中另一列的值。 我目前使用的這種說法:
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,只想用B.column_b_1_descr中的描述值替換A.column1值,因爲它們更易於閱讀。 我會很感激任何反饋。 感謝
爲了澄清,當column1爲'A'時,您希望輸出行中「column1」字段的字符串'aaa',而不是列*中的值*'aaa',對不對? – 2009-07-16 01:12:10