sql - 在一列中结合一个案例和一个 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
解决方案
嗯。. . 我想我会这样表述:
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 运算符。
推荐阅读
- delphi - 如何将 TIdWhois 与 SOCKS 代理一起使用
- xslt - XSLT 1.0 GROUPING 类似于 XLST 2.0 中的 for-each-group
- python - 在 Python 中训练决策树模型时出现类型错误?
- python - 使用 Python 的多处理并行化简单函数
- java - 如何计算两个 LocalTime 之间的差异并保存在要保存在银行中的变量中?
- android - Android - 在 ConcatAdapter 上拖放
- angular - 从 Angular 9 升级到 11 会阻止 router.navigate 加载新组件
- python - Scrapy 在文件中保存 200 个带有空项目的状态 url
- go - 如何在golang中制作struct类型的队列
- javascript - 计算对象列表的函数