从成多个变量的Oracle SQL同一列的不同行中选择值
问题描述:
这里的例子:从成多个变量的Oracle SQL同一列的不同行中选择值
ID | value
1 51
2 25
3 11
4 27
5 21
我需要得到前三个参数,并将它们放到变量如out_x,out_y,out_z。 是否有可能没有多个选择呢?
答
你可以做这样的事情:
select max(case when id = 1 then value end),
max(case when id = 2 then value end),
max(case when id = 3 then value end)
into out_x, out_y, out_z
from t
where id in (1, 2, 3);
不过,我认为形式的三个查询:
select value into out_x
from t
where id = 1;
是一个更简洁的方法。
答
您可以使用PIVOT
:
SELECT x, y, z
INTO out_x, out_y, out_z
FROM your_table
PIVOT (MAX(value) FOR id IN (1 AS x, 2 AS y, 3 AS z))
或者,如果你不知道你需要哪些ID
S(而只是希望第一个3)然后:
SELECT x, y, z
INTO out_x, out_y, out_z
FROM (
SELECT value, ROWNUM AS rn
FROM (SELECT value FROM your_table ORDER BY id)
WHERE ROWNUM <= 3
)
PIVOT (MAX(value) FOR rn IN (1 AS x, 2 AS y, 3 AS z))