Я извлекаю два столбца с помощью оператора case и выбираю их в один столбец
У меня есть два столбца с именами pno и rno оба varchar, который имеет номер заказа, и теперь мое требование
если rno не равно NULL, он должен вывести Actual Generated, если его нет, то его Forecast Generated.
если pno не равно NULL, он должен вывести Reconciled else 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, результат set.my ожидаемый результат должен возвращать все операторы case. Я не мог использовать и в случае утверждения условия, так как мне нужны все записи. Я запускаю это на Dbvisualizer.
Заранее спасибо.
1 ответ
Вы должны использовать pno is not null
вместо pno!=null
в SQL.SQL используется трехзначная логика, и pno!=null
является НЕИЗВЕСТНЫМ, что не является ни правдой, ни ложью, но, поскольку это не так, дело не рассматривается.
Таким образом, ваше заявление должно выглядеть
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