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 UnPivot

sql server如何通过pivot对数据进行行列转换(进阶)

SQL Server 使用 Pivot 和 UnPivot 实现行列转换

SQL Server 使用 Pivot 和 UnPivot 实现行列转换

sql server动态行列转换

SQL Server SQL性能优化之--pivot行列转换减少扫描计数优化查询语句