2016-11-26 68 views
0

我想用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列需要胜利数减去损失数。胜利就是一支球队比对手得分更多。永远不会有领带。

我被卡住了,因为对于不同的比赛,同一支球队可以被视为'主场'和'客场',那么LeagueStandings.GoalsScored和LeagueStandings.WinLoss表会如何填充?

回答

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 
2

一种方法是创建两个中间结果。在第一次,你聚集在主队的身份证号码,第二次通过客队的身份证号码。这将为您留下两个中间结果集,其中每个球队主场比赛的得分和每个球队客场比赛的得分都会有一个。您可以将每个团队ID的两个表的中间结果相加,并将其写入结果表。