在单行中的不同列中获取不同的行值

时间:2017-02-24 01:23:11

标签: sql oracle

我的表格如下:

Param_id     Param_value
------------------------
A             1
B             2
C             3
D             4

....等等。现在我只想要Param_id" A"的值。和" B"。

现在我想将param_value放在两个不同的列而不是两个不同的行中。但是如果我使用IN子句,它将返回两行结果。 我想要类似下面的内容:

Param_value_1       Param_value_2
---------------------------------
1                   2

我无法使用listaggpivot,因为它们不符合我的目的。有没有其他方法来实现这一目标?我在谷歌搜索但找不到任何解决方案。

1 个答案:

答案 0 :(得分:1)

旧的旋转方式...由于您要查找parameter_id in ('A', 'B')的参数值,因此将结果列param_value_1param_value_2命名为没有多大意义;为什么不param_value_aparam_value_b? (否则,'A' 1'B'的确定是2,而不是相反?)

所以 - 回到旧的转轴方式(虽然我怀疑PIVOT也可以工作,无论要求是什么 - 除非您使用的是Oracle 10或更低版本):

select max(case when param_id = 'A' then param_value end) as param_value_a,
       max(case when param_id = 'B' then param_value end) as param_value_b
from   your_table;