一千萬個為什麽

搜索

如何在SQL語句中組合特定的列值

我們的數據庫中有兩個變量,名為 OBB2B_OB 。有EP代碼,每個EP可能有以下4種組合之一:

 EP  OB B2B_OB
---  -- ------
 3   X
 7        X
11  
14   X    X

我想要做的是在提取的列表中組合X,以便我可以為單個EP提供A或B值。我的條件是:

IF (OB IS NULL AND B2B_OB IS NULL) THEN TYPE = A  
IF (OB IS NOT NULL OR B2B_OB IS NOT NULL) THEN TYPE = B

我想要獲取的列表就像這樣:

 EP  TYPE
---  ----
 3   B
 7   B
11   A
14   B

我怎麽能在我的查詢中這樣做? TIA。

最佳答案

(編輯:更正和OR)
這是一個解決方案(在postgres上測試語法,但是從我閱讀的內容來看,它應該是是相同的)

select ep, 
  case
    when ob is null and b2b_ob is null then a
    when ob is not null or b2b_ob is not null then b
    else null
  end as type
from table;

註意:else null是多余的,但只想強調默認的else情況。

轉載註明原文: 如何在SQL語句中組合特定的列值