Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 使用来自其他表的聚合数据填充表_Sql_Sql Server_Tsql_Aggregate Functions - Fatal编程技术网

Sql 使用来自其他表的聚合数据填充表

Sql 使用来自其他表的聚合数据填充表,sql,sql-server,tsql,aggregate-functions,Sql,Sql Server,Tsql,Aggregate Functions,我试图用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 P

我试图用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表?

一种方法是创建两个中间结果。第一个是主队id,第二个是客队id。这将为您留下两个中间结果集,其中一个是每个队主场比赛的分数,另一个是每个队客队比赛的分数。您可以为每个团队id汇总两个表的中间结果,并将其写入结果表。

一种方法是创建两个中间结果。第一个是主队id,第二个是客队id。这将为您留下两个中间结果集,其中一个是每个队主场比赛的分数,另一个是每个队客队比赛的分数。您可以为每个团队id汇总两个表的中间结果,并将其写入结果表

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