从成多个变量的Oracle SQL同一列的不同行中选择值

从成多个变量的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))