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



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

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

如果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语句的结果集。我期望的out put应该返回所有的case语句。由于我需要所有的记录,所以我不能使用和case语句条件。我在Dbvisualizer上运行这个。

提前谢谢。

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

相关内容

  • 没有找到相关文章

最新更新