首页 > 解决方案 > Oracle Pivot - 分配不带引号的列名

问题描述

我有一个查询:

select * from (
select 
ab_id, abc_metric, abc_value from TABLE1)
PIVOT(
min(abc_value)
FOR abc_metric IN ('Catalog','Fruit Type')); -- I have 50 such columns

这会产生一个表格:

ab_id     'Catalog'      'Fruit Type'
1         a               b
2         c               d

我想要带有不带引号的列并用分隔的表格_

ab_id     catalog        fruit_type
1         a               b
2         c               d

有没有办法做到这一点?

标签: sqloraclepivot

解决方案


只需使用条件聚合:

select ab_id,
       max(case when abc_metric = 'Catalog' then abc_value end) as catalog,
       max(case when abc_metric = 'Fruit Type' then abc_value end) as fruit_type
from TABLE1
group by ab_id

推荐阅读