Я извлекаю два столбца с помощью оператора 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
Другие вопросы по тегам