我有下表
ID-----Name------Value
1 City New York
1 Country USA
2 City Barcelona
2 Country Spain
期望的查询输出是
ID------City-------Country
1 New York USA
2 Barcelona Spain
能否请您告诉我是否可以使用 Oracle 中的查询来实现。我遇到了 listagg 和 pivote 这两个概念,但无法理解如何使用它们来实现我的需要。
我通过以下查询使用 listagg 以一种方式获得结果,但所有列都在单个列中,我需要将其分开。
select ID,
listagg(Name||';'||Value, ',') within group (order by Name) as Criteria
from table_name
group by ID;
最佳答案
我会使用聚合来做到这一点:
select id, max(case when name = 'City' then value end) as city,
max(case when name = 'Country' then value end) as country
from t
group by id;
关于sql - 将 Oracle 行转换为列的选择查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46329677/