我正在使用SQL Server Management Studio完成此任务。我对SQL有点不满意,对于如何完成这项工作非常困惑。数据是足球数据,独奏是指单人铲球。这是我刚开始的地方,我创建了我的计算字段:
SELECT A.ID, A.player, A.year, A.Solo, A.Total, A.Team, C.SoloTotal,
CAST(A.Solo AS Decimal) / NULLIF(CAST(C.SoloTotal AS Decimal),0) * 100
AS SoloDR
FROM [Football].[dbo].[WRK_CFBDef] A,
(
SELECT A.YearTeam, SUM(A.Solo) AS SoloTotal
FROM [Football].[dbo].[WRK_CFBDef] A
GROUP By A.YearTeam
) C
我创建的第一个字段是A.Solo中所有值的添加,由YearTeam的索引字段分组,在子查询中称为SoloTotal。然后在主查询中,它接受该字段并将A.Solo的原始个体值除以C.SoloTotal的分组总和,以获得每个玩家当年作为SoloDR的团队背景中Solo铲球的百分比。 / p>
我想要做的是将该号码永久添加到播放器旁边的列中作为SoloDR的表格。
我尝试过这样的事情,但它不起作用,我确信它可能甚至不是正确的道路。
Alter Table [football].[dbo].[Test]
ADD COLUMN SoloDR AS
(SELECT C.SoloDR
FROM [Football].[dbo].[WRK_CFBDef] A
(
SELECT SUM(A.Solo) AS SoloTotal
FROM [Football].[dbo].[WRK_CFBDef] A
) C )
我要找的代码在这里会是什么样的?
答案 0 :(得分:0)
这至少需要两个步骤。
第1步是将列添加到表中。请注意,如果要向已包含数据的表添加不可为空的列,则还需要创建DEFAULT,除非该列是IDENTITY或TIMESTAMP。
以下是添加列的基本语法:
ALTER TABLE [Football].[dbo].[WRK_CFBDef]
ADD [SoloDR] INT NULL
第2步是更新现有表,根据需要设置SoloDR的值。
答案 1 :(得分:0)
由于GROUP BY,您无法使用计算列。
您不应该将列添加到表中,因为您要存储重复数据。
你不应该依赖StackOverflow来为你应该做的(家庭)工作提供纯粹的答案,但我们可以给出一个提示: Views加入到您已经拥有的派生表,如果速度很慢,将准确处理。