SQL PIVOT函数进行 行转列

210 阅读1分钟

准备数据源

select TOP 3 F_ProtocolName as "名称",F_TotalFee as "费用" from CRM_Protocol
名称费用
西安市XXXX公司1000
上海市XXXX公司2000
厦门市XXXX有限公司3000

使用PIVOT函数进行 行转列

--行转列
select * from 
(select TOP 3 F_ProtocolName as "名称",F_TotalFee as "费用" from CRM_Protocol)
as a PIVOT(MAX(费用) FOR 名称 IN ("西安市XXXX公司","上海市XXXX公司","厦门市XXXX有限公司")) as lastData
西安市XXXX公司上海市XXXX公司厦门市XXXX有限公司
100020003000

注释

-- PIVOT 语法
SELECT <非透视的列>,
    [第一个透视的列] AS <列名称>,
    [第二个透视的列] AS <列名称>,
    ...
    [最后一个透视的列] AS <列名称>,

FROM
    (<生成数据的 SELECT 查询>) 
    AS <源查询的别名>

PIVOT
(
    <聚合函数>(<要聚合的列>)
FOR

[<包含要成为列标题的值的列>]
    IN ( [第一个透视的列], [第二个透视的列],
    ... [最后一个透视的列])
) AS <透视表的别名>
<可选的 ORDER BY 子句>;