Учитывая выражение SQL CASE с вложенными выражениями CASE, я ищу лучший способ эмулировать разрыв C или передачу Python во вложенном выражении CASE, чтобы я мог оценить остальные внешние варианты WHEN.
Например, представьте
select CASE
WHEN C1 THEN CASE
WHEN CA THEN 100
WHEN CB THEN 200
-- implied ELSE NULL
END
WHEN C2 THEN CASE
WHEN CC THEN 300
WHEN CD THEN 400
ELSE 500
END
WHEN C3 THEN CASE
WHEN CE THEN 600
END
WHEN C4
... etc
предположим, что оба условия C1 и C3 истинны, а C2 и C4 ложны. также предположим, что CA и CB ложны, CE истинны.
Внутренний случай для C1 принимает подразумеваемый ELSE NULL. Я хотел бы функционально иметь возможность сказать ELSE BREAK и позволить C2, C3 и т. д. оцениваться как часть внешнего случая. Желаемый результат 600.
Лучший способ, который я нашел, - это заменить внешний корпус ОБЪЕДИНЕНИЕМ всех внутренних корпусов.
такие как
COALESCE(
CASE C1 THEN
CASE
WHEN CA THEN 100
WHEN CB THEN 200
END
END
,
CASE C2 THEN
CASE
WHEN CC THEN 300
WHEN CD THEN 400
ELSE 500
END
END
,
CASE C3 THEN
CASE
WHEN CE THEN 600
END
END
,
... etc )
У кого-нибудь есть другие идеи? С несколькими уровнями CASE исходный код увеличивается в размере, что затрудняет его поддержку.
Я использую стандартный SQL 2008, никаких расширений, которые можно найти в T/SQL или SQL/PLUS и т. д.
Может быть, у вас есть способ отформатировать мое решение, чтобы сделать его наиболее читабельным?
Спасибо.