Sql 多行透视Oracle 11g

Sql 多行透视Oracle 11g,sql,oracle,pivot,Sql,Oracle,Pivot,我需要在保留重复行的同时,将长表中的值恢复为相同的宽度: IE:我的桌子: Colname | ColValue | PK Field1 | 12 | 1 Field2 | apple | 1 Field3 | blue | 1 Field3 | Red | 1 我想要的是: PK | Field1| Field2 | Field3 1 |12 | apple |blue 1 |12 | apple |re

我需要在保留重复行的同时,将长表中的值恢复为相同的宽度:

IE:我的桌子:

Colname |  ColValue  | PK
Field1  | 12         | 1
Field2  | apple      | 1
Field3  | blue       | 1
Field3  | Red        | 1
我想要的是:

PK | Field1| Field2 | Field3
1  |12     | apple  |blue
1  |12     | apple  |red
我似乎不知道如何在这种情况下使枢轴工作,因为在执行任何max(colvalue)之后,会删除第二个字段3的值。动态列解决方案会很好,因为我不一定知道字段/列的名称

我所拥有的:

select PK as CompPK,
                    ColName,
    Colvalue

        from test1)

        Pivot(
        max(colvalue) for ColNamein ('Field1' as Field1,'Field2' as Field2,'Field3' as Field3)
这当然只是:

PK | Field1| Field2 | Field3
1  |12     | apple  |blue
我确实在这个表上有一个时间戳列和其他“随机”列

编辑

对。理论上我想要所有可能的迭代。

试试看

select * from(
  Select pk, colvalue as field1
  From table1
  Where colname ='Field1'
) T1
Full Join (
  Select pk, colvalue as field2
  From table1
  Where colname ='Field2'
) T2
Using (pk)
Full join (
  Select pk, colvalue as field3
  From table1
  Where colname ='Field3'
) T3
Using (pk)
演示


如果有多个
field2
值怎么办?如果对于同一主键,field1有3个值,field2有4个值,field3有5个值怎么办?是否要获取这些值的所有可能组合(3*4*5=60行)?
| PK | FIELD1 | FIELD2 | FIELD3 |
|----|--------|--------|--------|
|  1 |     12 |  apple |   blue |
|  1 |     12 |  apple |    Red |