我正在尝试使用MatchResults表中的聚合数据填充LeagueStandings表。
CREATE TABLE [LeagueStandings] (
[TeamID] INTEGER NOT NULL PRIMARY KEY
,[GoalsScored] INTEGER NOT NULL
,[WinLoss] INTEGER NOT NULL
)
GO
CREATE TABLE [MatchResults] (
[MatchID] INTEGER NOT NULL PRIMARY KEY
,[HomeTeamID] INTEGER NOT NULL
,[HomeTeamGoalsScored] INTEGER NOT NULL
,[AwayTeamID] INTEGER NOT NULL
,[AwayTeamGoalsScored] INTEGER NOT NULL
)
GO
LeagueStandings.GoalsScored列需要是球队得分的总数,减去球队得分的总数。
同样,LeagueStandings.WinLoss列需要是胜利数量减去损失数量。胜利是指球队的进球数量超过对手。永远不会有平局。
我被困了,因为可以考虑同一个团队' home'并且'远离'对于不同的比赛,如何填充LeagueStandings.GoalsScored和LeagueStandings.WinLoss表?
答案 0 :(得分:2)
一种方法是创建两个中间结果。在第一个聚合主队ID,第二个聚合客队ID。这将为您留下两个中间结果集,其中包含每个球队主场比赛的得分以及每个球队客场比赛的得分。您可以为每个团队ID汇总两个表的中间结果,并将其写入结果表。
答案 1 :(得分:0)
select TeamID, sum(GoalsScored) as GoalsScored, sum(WinLoss) as Winloss
from (
select
HomeTeamID as TeamID,
HomeTeamGoalsScores as GoalsScored,
HomeTeamGoalsScores - AwayTeamGoalsScored as WinLoss
from MatchResults
union all
select
AwayTeamID as TeamID,
AwayTeamGoalsScores as GoalsScored,
AwayTeamGoalsScores - HomeTeamGoalsScored as WinLoss
from MatchResults) matches
group by TeamID