将行转换为列oracle SQL

时间:2015-07-17 17:02:09

标签: oracle pivot

我没有找到任何合适的先前答案,因此发布了问题。我需要将行转换为列。 PIVOT示例都将行转换为单个列,而我的要求是多列。我的表看起来像这样

Type     ID
test1    10
test1    20
test1    30
test2    10
test2    40

我希望它是

Type       ID        Type      ID
test1      10       test2      10
test1      20       test2      40
test1      30

感谢您的建议/输入!

2 个答案:

答案 0 :(得分:1)

您可以使用row_number()枚举行并生成pivot

SQLFiddle demo

select * 
  from (
    select d.*, row_number() over(partition by type order by id) rn from data d)
  pivot (max(type) type, max(id) id for type in ('test1' t1, 'test2' t2))

答案 1 :(得分:-1)

如果'ID'列是主键,则表中只能有一列作为主键。