我正在使用 case 语句提取两列并将它们选择为一列

Posted

技术标签:

【中文标题】我正在使用 case 语句提取两列并将它们选择为一列【英文标题】:I am extracting two columns using a case statement and selecting them into one single column 【发布时间】:2013-08-16 20:34:07 【问题描述】:

我有两列名为 pno 和 rno 都是 varchar 有一个订单号,现在我的要求是

如果 rno 不为 null,则应打印 Actual Generated,如果不是,则其 Forecast Generated

如果 pno 不为空,那么它应该打印 Reconciled 否则 Forecast Generated

我的查询是:

 select  
       case
        when (pno!=null) then 'Reconciled'
       when (pno=null) then 'Forecast1 Generated'
       when (rno=null) then 'Forecast Generated'
       when (rno!=null) then 'Actual Generated'
       end as Status
 from tablexyz

当我执行它时,我只会得到 pno 或 rno case 语句结果集。我的预期输出应该返回所有 case 语句。我无法使用 and in case 语句条件,因为我需要所有记录。 我在 Dbvisualizer 上运行它。

提前致谢。

【问题讨论】:

【参考方案1】:

在SQL中应该使用pno is not null而不是pno!=null。SQL使用三值逻辑,pno!=null是UNKNOWN,不是真也不是假,但由于不是真的,所以不采取这种情况。

所以你的陈述应该是这样的

select  
       case
       when (pno is not null) then 'Reconciled'
       when (pno is null) then 'Forecast1 Generated'
       when (rno is null) then 'Forecast Generated'
       when (rno is not null) then 'Actual Generated'
       end as Status
 from tablexyz

【讨论】:

抱歉提晚了,我用的是 Dbvisualizer

以上是关于我正在使用 case 语句提取两列并将它们选择为一列的主要内容,如果未能解决你的问题,请参考以下文章

PLSQL Case 语句比较两列

导入excel文件的C#函数选择任意两列并将它们逐个单元格添加并粘贴到其他列中

在 case 语句中使用正则表达式提取动态内容

协助从可能有逗号的列中选择 SQL Case 语句

如何从字符串中提取文本并将其保存为两列并在第三列的末尾添加字符

使用 Oracle 子选择替换 CASE 语句