Объединение нескольких строк внутри ELSE выражения CASE - PullRequest
0 голосов
/ 27 ноября 2018
SELECT  CASE WHEN inputNumber != 0 THEN  inputNumber 
             ELSE  111             
        END as Column_Name
FROM dual

Привет всем, inputNumber - это ввод, исходя из того, что мне нужно создать вывод, если его тогда 0, мой результат должен содержать три строки с 111, 222, 333

Над запросомработает, но я хочу добавить 222, 333 также в части Else, пожалуйста, предложите, чтобы в результате это было всего 3 строки, где ввод равен 0

Так что теперь, если вход равен 0, тогда выводэто

Column_Name
  111

Я хочу сделать это как

Column_Name
  111
  222
  333

Ответы [ 2 ]

0 голосов
/ 27 ноября 2018

Вот один из способов:

SELECT CASE WHEN :inputnumber = 0 THEN 111 * LEVEL ELSE :inputnumber END column_name
FROM   dual
CONNECT BY LEVEL <= CASE WHEN :inputnumber = 0 THEN 3 ELSE 1 END;

С: inputnumber = 0:

COLUMN_NAME
-----------
        111
        222
        333

С: inputnumber = 1:

COLUMN_NAME
-----------
          1
0 голосов
/ 27 ноября 2018

Ужасно, но должно работать:

SELECT  CASE WHEN inputNumber != 0 THEN  inputNumber 
             ELSE  111             
        END as Column_Name
FROM dual
UNION ALL 
SELECT 222 
FROM dual 
WHERE inputNumber = 0
UNION ALL 
SELECT 333
FROM dual 
WHERE inputNumber = 0

Обновление:

Возможно, более читабельно:

SELECT  inputNumber  as Column_Name
FROM dual
WHERE inputNumber != 0
UNION ALL 
SELECT 111
FROM dual 
WHERE inputNumber = 0
UNION ALL 
SELECT 222 
FROM dual 
WHERE inputNumber = 0
UNION ALL 
SELECT 333
FROM dual 
WHERE inputNumber = 0

PS: Извините, яне проверял это ...

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