我的表看起来像这样:
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,因为它们不能满足我的需求。有没有其他方法可以做到这一点?我在谷歌上搜索,但找不到任何解决方案。
发布于 2017-02-24 09:48:07
旧的旋转方式。由于您正在寻找parameter_id in ('A', 'B')的参数值,因此将结果列命名为param_value_1和param_value_2没有多大意义;为什么不命名为param_value_a和param_value_b呢?(否则,是什么决定了'A'是1,'B'是2,而不是相反?)
所以-回到老的旋转方式(尽管我怀疑PIVOT也可以工作,不管需要什么--除非你使用的是Oracle10或更低版本):
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;https://stackoverflow.com/questions/42429166
复制相似问题