Oracle Pivot - 不带引号分配列名

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (145)

我有一个问题:

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

有没有办法实现这个目标?

提问于
用户回答回答于

你可以AS在里面添加和别名PIVOT

select * 
from (select ab_id, abc_metric, abc_value from TABLE1)
PIVOT(min(abc_value)
  FOR abc_metric IN ('Catalog' AS Catalog,'Fruit Type' AS Fruit_type)
);

db <>小提琴演示

用户回答回答于

只需使用条件聚合:

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

扫码关注云+社区

领取腾讯云代金券