在数据按行和列排列的数据库表中,有时需要通过切换行来转换表结构列。这种技术称为数据透视。
场景:
您有一个示例表,其中包含 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中文网其他相关文章!