我的表格如下:
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
我无法使用listagg
或pivot
,因为它们不符合我的目的。有没有其他方法来实现这一目标?我在谷歌搜索但找不到任何解决方案。
答案 0 :(得分:1)
旧的旋转方式...由于您要查找parameter_id in ('A', 'B')
的参数值,因此将结果列param_value_1
和param_value_2
命名为没有多大意义;为什么不param_value_a
和param_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;