解决了: 在SQL表内将数据转出不能使用Pivot选项。

问题描述 投票:2回答:1

我想在一个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,子查询和一些数据操作。

sql-server tsql group-by pivot sql-server-2017
1个回答
3
投票

我建议使用条件聚合和字符串聚合函数。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
© www.soinside.com 2019 - 2024. All rights reserved.