【发布时间】:2021-01-07 09:56:29
【问题描述】:
我有一个名为 BasketTable 的 sql 表,其中包含类似的数据
Assists Rebounds Steals Blocks Fouls TeamId
10 32 8 6 11 13
18 36 8 6 9 9
我想要这样的输出
StatsName Team1 Team2
Assists 10 18
Rebounds 32 36
Steals 8 8
Blocks 6 6
Fouls 11 9
如果示例中有 3 行,则在输出中添加第三个团队数据列
我正在为此尝试此查询
select StatsName, HomeTeam from
(
select Assists, DefensiveRebounds as Rebounds, Steals, Blocks, PersonalFouls as Fouls
from CombinationStatistics cs
where GameId = 1082960
) x
unpivot (
HomeTeam for StatsName IN (Assists, Rebounds, Steals, Blocks, Fouls)
) p
上面的查询给我这个输出,
StatsName HomeTeam
Assists 10
Rebounds 32
Steals 8
Blocks 6
Fouls 11
Assists 18
Rebounds 36
Steals 8
Blocks 6
Fouls 9
我知道那是错误的,我想要第二个团队的另一个专栏,现在它在一个专栏中。如何通过 TeamId 区分数据?
【问题讨论】:
-
那么...您的问题/问题是什么?你读过docs.microsoft.com/en-us/sql/t-sql/queries/…了吗?
-
您将需要在此处进行 unpivot 和 pivot 操作。如果您的团队数量不定,那将是一些真正“混乱”的动态 SQL。我强烈建议您不要在不熟悉 SQL 的情况下这样做。似乎是您的表示层要做的事情;例如 SSRS 中的矩阵或 Microsoft Excel 中的数据透视表。
-
您需要添加
TeamID。就是这样! -
我添加了 TeamID,但它不起作用@MaciejLos
-
这不是“全部”@MaciejLos。然后,OP 将需要转置他们未转置的数据,即便如此,它也只能处理 2 个团队,超过 2 个。
标签: sql sql-server pivot-table unpivot