Может быть, я ошибаюсь, но - когда вы говорите, что у вас есть «те же 3 заявления CASE» - ну, вы не делаете.Это 3 разные CASE заявления.Выражение одно и то же, да, но вы выбираете 3 разных столбца с разными результатами (A, B, P, Q, X, Y - в вашем примере).
Вы можете создать функцию, которая«спрятал» код, который вы сейчас используете, и сделал бы SELECT
красивее, например,
select
pk_id, ...,
f_col(1, MGR_ID, EMP_ID) first_col,
f_col(2, MGR_ID, EMP_ID) second_col,
f_col(3, MGR_ID, EMP_ID) third_col
from m_sel_tabs
, но - в конце - это было бы точно так же (или, возможно, несколько хуже из-за переключения контекста), так как вам нужно было бы поместить весь этот код куда-нибудь (в функцию, верно?).