首页 >数据库 >mysql教程 >如何在 SQL Server 中透视多个列以实现最佳数据呈现?

如何在 SQL Server 中透视多个列以实现最佳数据呈现?

Susan Sarandon
Susan Sarandon原创
2024-12-31 18:21:12184浏览

How to Pivot Multiple Columns in SQL Server for Optimal Data Presentation?

在 SQL Server 中透视多个列以实现最佳数据呈现

使用关系数据库时,透视表可能是重塑数据的有效方法以便于分析和可视化。在 SQL Server 中,当处理具有多个要显示为行的列的表时,此技术特别有用。

问题陈述:

考虑以下示例table:

Branch  | Category | Sales | Stock  | Target
------- | ******** | ----- | ----- | -------
Branch1 | Panel    | 100   | 200   | 300
Branch1 | AC       | 150   | 250   | 350
Branch1 | Ref      | 200   | 300   | 400

目标是透视类别列并将销售、库存和目标列显示为行,产生以下结果输出:

Branch  | Panel | AC   | Ref  |
------- | ------ | -- | ---- |
Branch1 | 100   | 150 | 200  |

解决方案:

为了获得所需的输出,我们可以在SQL Server中使用一系列的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. 准备数据:它重命名了 Category 列并添加了两个附加列,Category1和 Category2,以方便后续数据透视。
  2. 销售数据透视: 第一个数据透视语句创建 pv1 表,该表对每个类别的销售额进行求和。
  3. Pivot for Stock: 第二个数据透视语句创建 pv2 表,该表对每个数据的库存求和类别。
  4. 透视目标:第三个透视语句创建 pv3 表,该表对每个类别的目标求和。

生成的 pv3 表包含所需的输出,其中类别为行,列代表销售额、库存和目标值。

以上是如何在 SQL Server 中透视多个列以实现最佳数据呈现?的详细内容。更多信息请关注PHP中文网其他相关文章!

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