2016-03-04 39 views
0

我想爲PS查詢結果的字段派生一個值,並且該值基於多個表字段,而不僅僅是一個。下面的代碼的一個例子,我開始工作:在PS查詢的DECODE表達式中使用多個字段

DECODE(A.ACAD_PLAN,'BA 000','ASSIGN',Q.ACAD_PLAN,NULL,'DO NOT ASSIGN'). 

有我的數據有3個選項:

  1. ACAD_PLAN = 'BA 000'(我希望它分配「分配」)
  2. ACAD_GROUP = 'SAM' and ACAD_PLAN is NULL(分配「不分配「)
  3. ACAD_GROUP = 'SAM' and ACAD_PLAN = 'SAM xxx'有SAM後可能有多個計劃碼(分配"ASSIGN WITH CAUTION"

上面的代碼可以插入'ASSIGN''DO NOT ASSIGN',但是這會讓#3出來。爲了保持這個儘可能簡單,我想簡單地說:ELSE 'ASSIGN WITH CAUTION'。我試着寫它:

DECODE(A.ACAD_PLAN,'BA 000','ASSIGN',Q.ACAD_PLAN,NULL,'DO NOT ASSIGN','ASSIGN WITH CAUTION') 

我的結果是,只有"ASSIGN"被填充和其他一切都是空白。

任何想法?

回答

2

最簡單的方法是使用case語句。你沒有提到你的數據庫是什麼,但語法應該是類似的東西。

select 
Case 
    when ACAD_PLAN = 'BA 000' then 'ASSIGN' 
    when ACAD_GROUP = 'SAM' and ACAD_PLAN is NULL then 'DO NOT ASSIGN' 
    when ACAD_GROUP = 'SAM' and ACAD_PLAN = 'SAM xxx' then 'ASSIGN WITH CAUTION' 
End 
From ....