簡體   English   中英

在函數中使用案例語句

[英]Using a Case Statement in a Function

我正在編寫的一個查詢存在問題-我正在創建一個指標字段,如果滿足兩種情況,我只想顯示為“ 1”。 該字段是使用MAX()函數內的case語句構建的-我需要該函數,因為此部分是CTE的一部分,該CTE與另一個將行變成列的CTE相連,並且我使用了函數來橫向化。

 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個案例的百分比),並且我認為構建指標案例聲明的方式可以解決這一問題。

在IRPM_PCT CASE語句中,對PMOD6_PGM進行兩次“ C”檢查(而不是“ C”然后是“ D”)。

因此,如果PMOD6_PGM ='IR',PMOD6_PCT為非零且PMOD1_CD ='D',那么您將得到IRPM_IND = 1和IRPM_PCT = 0(因為IRPM_PCT CASE語句中沒有PMOD1_CD IN ('D') )。 。

因此,只需將最后一個PMOD1_CD IN ('C')更改為PMOD1_CD IN ('D')

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM