我想在一个SQL表中进行数据转置,但这是一点自定义转置技术和可能将值连成一个表单元格。
下面是一个示例数据集。从 [master].[dbo].[OLE DB Destination 3]
_ParentKey Field |name |type
1 |CHEVRON MIDCONTINENT LP |Grantor
1 |CHEVRON USA INC |Grantor
1 |UNION OIL CO |Grantor
1 |XBM PRODUCTION LP |Grantor
1 |CASILLAS PETROLEUM |Grantee
2 |OSAGE OIL AND GAS PROPERTIES |Grantor
2 |CASILLAS PETROLEUM |Grantee
以下是查询的结果
_ParentKey Field |Grantor |Grantee
1 |CHEVRON MIDCONTINENT LP, CHEVRON USA INC, UNION OIL, XBM PRODUCTION LP|CASILLAS PETROLEUM
2 |OSAGE OIL AND GAS PROPERTIES |CASILLAS PETROLEUM
我假设 _ParentKey Field
字段将作为 "主键 "来转置这些数据。"name "列中的每个Name都会有一个Grantor或Granttee类型.免责声明:我只知道基本的SQL,直到Joining,子查询和一些数据操作。
我建议使用条件聚合和字符串聚合函数。string_agg()
:
select
_ParentKey,
string_agg(case when type = 'Grantor' then name end, ', ') grantor,
string_agg(case when type = 'Grantee' then name end, ', ') grantee
from mytable
group by _ParentKey