SQL Server pivot行列转换案例分析
Posted ShenLiang2025
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL Server pivot行列转换案例分析相关的知识,希望对你有一定的参考价值。
通过Pivot进行行列转换
需求描述
需求:如果我们对订单表(Sales.Orders)里的客户编号(cust_id)以不同的货船编号(shipperid)为列,其对应的费用(freight)求和为值进行转置。
解决方法:这里需要用PIVOT关键字。
数据建表脚本
详细见分享出链接:
链接:https://pan.baidu.com/s/18AxfOvXu9mtSfbtRcWAr7Q
提取码:u7ir
-- Sales.Orders订单表里用户编号、货船编号、运费示例数据
SELECT TOP 12
custid,
shipperid,
freight
FROM Sales.Orders
SQL实现
-- #Step1 这里我们想以shipperid为列,那么首先得知道当前表里有多少类,取出其对应的值。这里不难得到
SELECT DISTINCT shipperid FROM Sales.Orders
/*
结果为:
shipperid
1
2
3
*/
-- #Step2编写行转列代码
WITH PivotData AS
(
SELECT
custid,
shipperid,
freight
FROM Sales.Orders
)
SELECT TOP 10 custid,
ISNULL([1], 0.00) AS [1],
ISNULL([2], 0.00) AS [2],
ISNULL([3], 0.00) AS [3]
FROM PivotData
PIVOT(SUM(freight) FOR shipperid IN ([1],[2],[3]) ) AS P;
/* 结果
custid 1 2 3
1 95.03 61.02 69.53
2 43.90 0.00 53.52
3 63.09 116.56 88.87
4 41.95 358.54 71.46
5 189.44 1074.51 295.57
6 0.15 126.19 41.92
7 217.96 215.70 190.00
8 16.16 175.01 0.00
9 341.16 419.57 597.14
10 129.42 162.17 502.36
*/
以上是关于SQL Server pivot行列转换案例分析的主要内容,如果未能解决你的问题,请参考以下文章
sql server如何通过pivot对数据进行行列转换(进阶)
SQL Server 使用 Pivot 和 UnPivot 实现行列转换