Sql 多行透视Oracle 11g
我需要在保留重复行的同时,将长表中的值恢复为相同的宽度: IE:我的桌子: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
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 |