在 SQL Server 中使用 PIVOT 转换数据
SQL Server PIVOT 操作允许您将数据从宽格式转换为高格式,使汇总和分析数据变得更加容易。当您希望将按行和列组织的数据转换为每列代表特定属性、每行代表该属性的特定值的格式时,这特别有用。
示例场景是转换以下数据集,其中包含宽格式的数据:
Name1 | Name2 | Value -------|-------|------- A | P1 | 1 A | P2 | 1 A | P3 | 2 B | P1 | 3 B | P2 | 1 B | P4 | 1
转换为以下格式:
A B P1 1 4 P2 1 1 P3 2 NULL P4 NULL 1
在 SQL 中实现此转换Server 2005,可以使用以下代码:
DECLARE @cols VARCHAR(1000) DECLARE @sqlquery VARCHAR(2000) SELECT @cols = STUFF(( SELECT distinct ',' + QuoteName([Name1]) FROM myTable FOR XML PATH('') ), 1, 1, '') SET @sqlquery = 'SELECT * FROM (SELECT Name2, Name1, Value FROM myTable ) base PIVOT (Sum(Value) FOR [Name1] IN (' + @cols + ')) AS finalpivot' EXECUTE ( @sqlquery )
此代码根据 Name1 列中的唯一值动态组装 PIVOT 查询。它首先将不同的 Name1 值连接到一个以逗号分隔的列表中,然后在 PIVOT 语句中使用该列表来创建新列。 SUM() 聚合函数计算每行 (Name2) 中每个属性 (Name1) 的总值。
结果是具有所需的高格式的转换数据集,其中每列代表一个 Name1 属性,每个行包含该属性的相应总和值。这种格式通过提供更简洁、更有组织的数据视图来促进数据分析和汇总。
以上是SQL Server 的 PIVOT 函数如何将宽数据转换为更易于分析的格式?的详细内容。更多信息请关注PHP中文网其他相关文章!