我遇到了一個我正在寫的查詢語句的問題 - 我創建了一個指示符字段,如果滿足幾個例子,我只想顯示爲'1'。該字段是使用MAX()函數中的case語句構建的 - 我需要該函數,因爲這部分是CTE的一部分,與另一個將行轉換爲列的CTE結合,並使用函數進行橫向化。在函數中使用Case語句
MAX(CASE
WHEN PMOD1_PGM IN ('IR') AND INTEGER(PMOD1_PCT) <> 0
THEN 1
WHEN PMOD2_PGM IN ('IR') AND INTEGER(PMOD2_PCT) <> 0
THEN 1
WHEN PMOD3_PGM IN ('IR') AND INTEGER(PMOD3_PCT) <> 0
THEN 1
WHEN PMOD4_PGM IN ('IR') AND INTEGER(PMOD4_PCT) <> 0
THEN 1
WHEN PMOD5_PGM IN ('IR') AND INTEGER(PMOD5_PCT) <> 0
THEN 1
WHEN PMOD6_PGM IN ('IR') AND INTEGER(PMOD6_PCT) <> 0
THEN 1
ELSE 0 END) AS @IRPM_IND,
/*@IRPM_PCT*/
MAX(CASE
WHEN PMOD1_PGM IN ('IR') AND PMOD1_CD IN ('C')
THEN PMOD1_PCT * - 1
WHEN PMOD1_PGM IN ('IR') AND PMOD1_CD IN ('D')
THEN PMOD1_PCT
WHEN PMOD2_PGM IN ('IR') AND PMOD1_CD IN ('C')
THEN PMOD2_PCT * - 1
WHEN PMOD2_PGM IN ('IR') AND PMOD1_CD IN ('D')
THEN PMOD2_PCT
WHEN PMOD3_PGM IN ('IR') AND PMOD1_CD IN ('C')
THEN PMOD3_PCT * - 1
WHEN PMOD3_PGM IN ('IR') AND PMOD1_CD IN ('D')
THEN PMOD3_PCT
WHEN PMOD4_PGM IN ('IR') AND PMOD1_CD IN ('C')
THEN PMOD4_PCT * - 1
WHEN PMOD4_PGM IN ('IR') AND PMOD1_CD IN ('D')
THEN PMOD4_PCT
WHEN PMOD5_PGM IN ('IR') AND PMOD1_CD IN ('C')
THEN PMOD5_PCT * - 1
WHEN PMOD5_PGM IN ('IR') AND PMOD1_CD IN ('D')
THEN PMOD5_PCT
WHEN PMOD6_PGM IN ('IR') AND PMOD1_CD IN ('C')
THEN PMOD6_PCT * - 1
WHEN PMOD6_PGM IN ('IR') AND PMOD1_CD IN ('C')
THEN PMOD6_PCT
ELSE 0 END) AS @IRPM_PCT
基本上我檢查一個字段,看是否「IR」是否存在以及它的百分比不等於0〜如果,所以我想爲1的指標,但,當我運行此,仍然有一些條目指標爲1,@IRPM_PCT爲0.任何建議?它是否與MAX()函數中的case語句有關?當我檢查通過的數據時,它似乎「工作」,但我想消除這些指標中的1個,0個百分比,我認爲我構建指標案例陳述的方式將處理此問題。
請用你正在使用的數據庫標記你的問題。 –
你能分享一些樣本數據,你試圖得到的結果以及你實際得到的結果嗎? – Mureinik
很抱歉,DB2添加了。 – user5888721