【问题标题】:Create table with unknown number of columns创建列数未知的表
【发布时间】:2022-01-17 19:40:54
【问题描述】:

我有下表:

Team Product Number
T1 P1 1
T2 P1 2
T3 P1 3
T1 P2 4
T2 P2 5
T3 P2 6
T1 P3 7
T2 P3 8
T3 P3 9

使用此查询:

SELECT Team AS Team, P1, P2, P3
FROM team_data AS td
PIVOT (
 sum(Number)
 FOR Product
 IN (P1, P2, P3)
) AS td;

我可以把它变成这种格式:

Team P1 P2 P3
T1 1 4 7
T2 2 5 8
T3 3 6 9

我现在的目标是让这个动态化。我希望它适用于未知数量的产品。团队的数量应该已经是可变的了。

【问题讨论】:

  • 使用这个查询: 这个 SQL 代码在 MySQL 中是错误的。也许您使用 SQL Server (MS SQL)?
  • 你是对的。我将 sum(Count) 编辑为 sum(Number)。它现在应该可以工作了。

标签: mysql sql datatable pivot


【解决方案1】:

我发现这个解决方案在这种情况下效果很好:

Declare @PivotCols Varchar(2000)   
Set @PivotCols=''
Select @PivotCols=(Select Distinct '['+ product +'],' from team_data2 for Xml Path(''))
Set @PivotCols=SUBSTRING(@PivotCols,1,len(@PivotCols)-1)
--Dynemic Query To Run Pivot   
exec('Select * From team_data2 as tmp pivot (sum(Number) for  product in ('+@PivotCols+')) as tbl')

在这种情况下,测试数据被称为“team_data2”。

【讨论】:

    猜你喜欢
    • 2019-03-26
    • 2015-05-03
    • 1970-01-01
    • 2018-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-20
    • 2012-06-13
    相关资源
    最近更新 更多