在PS查询中使用DECODE表达式中的多个字段

时间:2016-03-04 21:36:47

标签: sql expression peoplesoft

我正在尝试为PS查询结果的字段派生值,并且该值基于多个表字段,而不仅仅是一个。这是我开始工作的代码示例:

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

我的数据有3个选项:

  1. ACAD_PLAN = 'BA 000'(我希望它指定“ASSIGN”)
  2. ACAD_GROUP = 'SAM' and ACAD_PLAN is NULL(指定“请勿指定”)
  3. ACAD_GROUP = 'SAM' and ACAD_PLAN = 'SAM xxx' SAM 后可能有多个计划代码,(分配"ASSIGN WITH CAUTION"
  4. 上面的代码可以插入'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",其他所有内容都是空白的。

    有什么想法吗?

1 个答案:

答案 0 :(得分: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 ....