В: Как мне объединить оба оператора CASE выражения
Каждое CASE
выражение будет возвращать одно значение. Если требуется вернуть два отдельных столбца в наборе результатов, для этого потребуется два отдельных выражения в списке SELECT.
Например:
DESC PID model_number genre
---- ---------- ------------ ------
AAA A300X-2x-P 300 X
AAA A500Y-5x-p 500 Y
AAA A700X-2x-p 700 X
AAA A50CE-2x-P (NULL) (NULL)
FOO A300X-2x-P (NULL) (NULL)
Должно быть выражение для возврата столбца model_number
и отдельное выражение для возврата столбца genre
.
Невозможно, чтобы одно выражение возвращало два отдельных столбца.
В: и добавьте еще один [третий] случай, который будет иметь эти два случая.
A CASE
выражение возвращает значение; мы можем использовать выражение CASE
почти в любом месте оператора SQL, где мы можем использовать значение, в том числе в другом выражении CASE
.
Мы также можем объединить несколько условий в WHEN
тесте с AND
и OR
В качестве примера объединения условий и вложений выражений CASE для выражений ...
CASE
WHEN ( ( t.PID LIKE '_300%' OR t.PID LIKE '_500%' OR t.PID LIKE '_700%' )
AND ( t.DESC = 'AAA' )
)
THEN CASE
WHEN ( t.PID LIKE '____X%' )
THEN 'X'
WHEN ( t.PID LIKE '____Y%' )
THEN 'Y'
ELSE NULL
END
ELSE NULL
END AS `genre`
Есть другие выражения, которые будут возвращать эквивалентный результат; приведенный здесь пример не обязательно является лучшим выражением. Это просто демонстрация объединения условий и вложенных выражений CASE.
Обратите внимание, что для возврата другого столбца model
нам необходимо включить другое выражение в список SELECT. Подобные условия необходимо будет повторить; невозможно сослаться на условия WHEN
в другом выражении CASE
.