У меня есть один оператор select, который возвращает запрос, подобный следующему:
SELECT value FROM dummy WHERE condition = 1; ROW | value -----|----- 1 | val1 2 | val2 3 | val3 4 | val4
У меня есть 4 переменные
r1, r2, r3, r4
Какой самый чистый способ присвоения этим переменным значений моего запрос? Могу ли я использовать инструкцию SELECT INTO?
Один метод:
SELECT p_v1 = MAX(CASE WHEN row = 1 THEN value end), p_v2 = MAX(CASE WHEN row = 2 THEN value end), p_v3 = MAX(CASE WHEN row = 3 THEN value end), p_v4 = MAX(CASE WHEN row = 4 THEN value end) FROM dummy WHERE condition = 1;
Это запрос агрегации, который возвращает одну строку. Если конкретная строка отсутствует, то значение будет NULL.
NULL
Вы можете PIVOT следующим образом;
PIVOT
Select v1, v2, v3, v4 Into val1, val2, val3, val4 From (SELECT value FROM dummy WHERE condition = 1) Pivot (Max(value) for row in (1 as v1, 2 as v2, 3 as v3, 4 as v4))
Ура !!