Я пытаюсь понять, правильно ли я вкладываю эти выражения case. Это оптимальный способ go о вложении этих?
Чтобы объяснить, что я пытаюсь сделать здесь, создайте функцию, которая просматривает три столбца в одной таблице. Строковый результат определяется на основе найденного ввода. Если ввод не найден в столбце 1 (он же тест), то он перемещается в столбец 2 (транспонирование), а затем в столбец 3 (построение) до тех пор, пока не будет найден какой-либо результат или он не перейдет.
I ' Я не уверен, что это лучший и или правильный способ go об этой ситуации. Любые предложения будут с благодарностью.
CREATE OR REPLACE FUNCTION any_class(test TEXT, transpose TEXT, construction TEXT) RETURNS TEXT AS $$
SELECT CASE
WHEN test IN ('a', 'b') THEN 'result1'
WHEN test IN ('c', 'd') THEN 'result2'
WHEN test IN ('e', 'f') THEN 'result3'
WHEN test IN ('g', 'h') THEN 'result4'
WHEN test IN ('i', 'j') THEN 'result5'
WHEN test IN ('k', 'l', 'm') THEN 'result6'
WHEN test IN ('n') THEN 'result7'
WHEN test IN ('o') THEN 'result8'
WHEN test IN ('p') THEN 'result9'
WHEN test IN ('q', 'r', 's', 't', 'u') THEN 'result10'
ELSE CASE
WHEN transpose IN ('a', 'b') THEN 'result1'
WHEN transpose IN ('c', 'd') THEN 'result2'
WHEN transpose IN ('e', 'f') THEN 'result3'
WHEN transpose IN ('g', 'h') THEN 'result4'
WHEN transpose IN ('i', 'j') THEN 'result5'
WHEN transpose IN ('k', 'l', 'm') THEN 'result6'
WHEN transpose IN ('n') THEN 'result7'
WHEN transpose IN ('o') THEN 'result8'
WHEN transpose IN ('p') THEN 'result9'
WHEN transpose IN ('q', 'r', 's', 't', 'u') THEN 'result10'
ELSE CASE
WHEN construction IN ('a', 'b') THEN 'result1'
WHEN construction IN ('c', 'd') THEN 'result2'
WHEN construction IN ('e', 'f') THEN 'result3'
WHEN construction IN ('g', 'h') THEN 'result4'
WHEN construction IN ('i', 'j') THEN 'result5'
WHEN construction IN ('k', 'l', 'm') THEN 'result6'
WHEN construction IN ('n') THEN 'result7'
WHEN construction IN ('o') THEN 'result8'
WHEN construction IN ('p') THEN 'result9'
WHEN construction IN ('q', 'r', 's', 't', 'u') THEN 'result10'
END
END
END;
$$
LANGUAGE SQL
IMMUTABLE PARALLEL SAFE;