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

时间:2013-08-16 20:34:08

标签: sql case dbvisualizer

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

  
    

如果rno不为空,则应打印实际生成,如果不是则预测生成

         

如果pno不为null,则应打印已对帐其他预测已生成

  

我的查询是:

 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语句结果set.my expect out put应返回所有case语句。因为我需要所有记录,所以我无法使用和以及语句条件。 我在Dbvisualizer上运行它。

提前致谢。

1 个答案:

答案 0 :(得分:0)

你应该在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