我有两个名为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