在Oracle SQL中将同一列的不同行中的值选择为多个变量
下面是一个例子:在Oracle SQL中将同一列的不同行中的值选择为多个变量,sql,oracle,select-into,Sql,Oracle,Select Into,下面是一个例子: 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
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;
是一种更干净的方法。您可以使用枢轴:
或者,如果您不知道需要哪些ID,但只需要前3个ID,则:
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 ) )
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 ) )