首页 > 解决方案 > 在一列中结合一个案例和一个 Coalese

问题描述

我有一个要合并的两列查询

Select 
  CASE WHEN ORGNBR IS NULL THEN ‘P’
       WHEN PERSNBR IS NULL THE. ‘O’
       Else null end as “owner”
  , coalesce (orgnbr,persnbr) as “owner num”
From table 

结果

Owner  | Owner Num
  O    | 12345
  P    | 12899

每个人/组织都分配有一个编号,我希望能够通过在组织编号前面放一个 0 和在人员 nnbr 前面放一个 P 来识别一个人的组织

我想将这两行组合起来,以便结果将 O 放在 ORGNBR 前面,将 PI 放在 PERSNBR 前面

预期成绩

 Owner  
  O  12345
  P 12899

标签: sqloracle

解决方案


嗯。. . 我想我会这样表述:

SELECT (CASE WHEN ORGNBR IS NOT NULL THEN 'O' || orgnbr
             WHEN PERSNBR IS NOT NULL THEN 'P' || persnbr
        END) as owner
FROM table ;

(您可以根据需要添加其他列。)

重要的是,这改变了逻辑,因此它是“积极的”而不是“消极的”。也就是说,条件是“如果一个orgnbr存在,那么在前面加上一个'O'”,而不是“如果一个orgnbr不存在,那么在前面加上一个'P'”。后者更难遵循并且不容易允许更多类别。

这也使用了在 Oracle 中更通俗的 concat 运算符。


推荐阅读