2016-05-23 45 views
0

我想使用case語句在表格的2列之間切換。 這裏是我的代碼:我們如何在具有多列的case語句中使用別名?

CASE WHEN :currency_flag ='Y' THEN tr.TRXN_RPTNG_AM ELSE 0 END as TRXN_RPTNG_AM 
CASE WHEN :currency_flag ='N' THEN tr.TRXN_BASE_AM ELSE 0 END as TRXN_BASE_AM 

在這裏,我需要考慮trxn_rptng_am如果貨幣標誌是Y和trxn_base_am如果貨幣的標誌是N.

有人可以幫助我了這一點。

+0

樣本數據和預期的結果將有助於解釋你正在嘗試做的。 –

+0

你想要的結果是什麼? – Blank

+1

這是case表達式,而不是case語句。 (一個case表達式有一個返回值,一個case語句是條件執行的代碼,例如在存儲過程中。) – jarlh

回答

1

您需要兩個表達式組合成一個:

CASE :currency_flag 
    WHEN 'Y' THEN tr.TRXN_RPTNG_AM 
    WHEN 'N' THEN tr.TRXN_BASE_AM 
    ELSE 0 
END AS TRXN_SWITCHED 
+0

感謝你的回答。但在這裏我的要求是要麼得到trxn_rptng_am或trxn_base_am。這些是來自表的列,所以如果貨幣標誌是Y,我需要從表中選擇trxn_rptng_am,如果它是N,那麼我需要選擇trxn_base_am。 – user2523599

+0

他希望列名根據'currency_flag'改變 – sagi

+0

@ user2523599當你把這個'CASE'表達式放到'SELECT'中時,你會得到一個名爲'TRXN_SWITCHED'的列。該列的值將是'tr.TRXN_RPTNG_AM'或'tr.TRXN_BASE_AM',具體取決於':currency_flag'開關的值。不過,該列的名稱將是相同的。 – dasblinkenlight