Как назначить два столбца с помощью CASE в запросе SQL - PullRequest
0 голосов
/ 26 мая 2020

Как я могу присвоить значения более чем одному столбцу в моем SQL query с помощью CASE оператора. Когда я пытался, как показано ниже, я получаю сообщение об ошибке.

select case when 1=1 then 'Y' column1, 'Yes' column2 end from dual;

ORA-00905: missing keyword 00905. 00000 - "missing keyword" *Cause:<br> *Action: Error at Line: 24 Column: 31

Не могли бы вы помочь.

Ответы [ 3 ]

0 голосов
/ 26 мая 2020

Возможно, вы хотите:

select 'Y' as column1, 'Yes' as column1
from dual
where 1=1
union all
select NULL, NULL
from dual
where not (1=1);
0 голосов
/ 26 мая 2020

Использовать агрегирование и предложение WHERE:

select max('Y') column1, max('Yes') column2 
from dual
where 1=1

Результат:

> COLUMN1 | COLUMN2
> :------ | :------
> Y       | Yes

Или:

select max('Y') column1, max('Yes') column2 
from dual
where 1=2

Результат:

> COLUMN1 | COLUMN2
> :------ | :------
> null    | null 

См. демонстрацию .

0 голосов
/ 26 мая 2020

Повторите case:

SQL> select case when 1 = 1 then 'Y'
  2              else 'N'
  3         end column1,
  4         --
  5         case when 1 = 1 then 'Y'
  6              else 'N'
  7         end column2
  8  from dual;

C C
- -
Y Y

SQL>

Если вы не хотите повторять это, CTE - это один из вариантов, который вы можете использовать:

SQL> with temp as
  2    (select case when 1 = 1 then 'Y'
  3                 else 'N'
  4            end val
  5     from dual
  6    )
  7  select val as column1,
  8         val as column2
  9  from temp;

C C
- -
Y Y

SQL>

Или , еще меньше набирать:

SQL> select val as column1,
  2         val as column2
  3  from (select decode(1, 1, 'Y', 'N') va
  4        from dual);

C C
- -
Y Y

SQL>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...