我正在尝试在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
字段将是“主键”来转置此数据。 “名称”列中的每个名称都将具有授予者或被授予者类型。免责声明:我只了解基本的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