首页 >数据库 >mysql教程 >如何使用多个 PIVOT 语句在 SQL Server 中透视多个列?

如何使用多个 PIVOT 语句在 SQL Server 中透视多个列?

DDD
DDD原创
2025-01-03 16:55:41788浏览

How to Pivot Multiple Columns in SQL Server Using Multiple PIVOT Statements?

在 SQL Server 中透视多列

在数据按行和列排列的数据库表中,有时需要通过切换行来转换表结构列。这种技术称为数据透视。

场景:

您有一个示例表,其中包含 Branch、Category、Sales、Stock 和 Target 等列。您希望使用“类别”列对表进行透视,并将其余列(销售额、库存、目标)排列为行。所需的输出应将类别作为列,将值作为行。

解决方案:

要对表进行透视,您可以使用多个 PIVOT 语句并进行适当的列名称修改:

SELECT
*
FROM
(
  SELECT 
   Branch,
   Category,
   Category+'1' As Category1,
   Category+'2' As Category2,
   Sales, 
   Stock, 
   Target
  FROM TblPivot
 ) AS P

 -- For Sales
 PIVOT
 (
   SUM(Sales) FOR Category IN ([Panel], [AC], [Ref])
 ) AS pv1

 -- For Stock
 PIVOT
 (
   SUM(Stock) FOR Category1 IN ([Panel1], [AC1], [Ref1])
 ) AS pv2

 -- For Target
 PIVOT
 (
   SUM(Target) FOR Category2 IN ([Panel2], [AC2], [Ref2])
 ) AS pv3
 GO

通过修改列名称(例如类别“1”和类别“2”),您可以确保PIVOT 语句正确工作。

中间表(pv1、pv2、pv3)将分别提供 Sales、Stock 和 Target 的透视数据。然后,您可以根据需要聚合 pv3 的结果来对值进行分组和求和。

以上是如何使用多个 PIVOT 语句在 SQL Server 中透视多个列?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn