在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 ) )