>我得到了这个视图(这是示例数据(:
HomeTeam HomeTeamScore AwayTeamScore AwayTeam
---------------------------------------------------------------
Middlesbrough 3 1 Manchester United
Manchester City 1 1 Liverpool
Liverpool 2 0 Middlesbrough
Manchester United 3 2 Manchester City
我以这种方式计算主队的进球数(类似地,我计算客队的进球数(:
SELECT HomeTeam, SUM (HomeTeamScore) AS CountGoals
FROM vW_Match
GROUP BY HomeTeam ORDER BY CountGoals DESC
如何计算团队积分?如果结果平局,两队都得1分,如果第一队进球多,客队得3分,如果客队进球多,得3分?
你可以试试
;WITH temps AS
(SELECT HomeTeam AS Team,
case when HomeTeamScore = AwayTeamScore then 1
when HomeTeamScore > AwayTeamScore then 3
ELSE 0
end AS Point
FROM vW_Match
UNION ALL
SELECT AwayTeam AS Team,
case when HomeTeamScore = AwayTeamScore then 1
when AwayTeamScore > HomeTeamScore then 3
ELSE 0
end AS Point
FROM vW_Match
)
select t.Team, sum(t.Point) as TotalPoint
from temps t
group by t.Team
试试这个:
SELECT team, sum(points) from (
select HomeTeam as team,
case
when HomeTeamScore > AwayTeamScore then 3
when HomeTeamScore = AwayTeamScore then 1
ELSE 0
end as points
FROM vW_Match
UNION ALL
select AwayTeam as team,
case
when HomeTeamScore > AwayTeamScore then 0
when HomeTeamScore = AwayTeamScore then 1
ELSE 3
end as points
FROM vW_Match
) t
GROUP BY team
使用 CASE 语句比较每支球队的结果,您可以获得每场比赛的相应分数:
select HomeTeam,
HomeTeamScore,
case when HomeTeamScore = AwayTeamScore then 1
when HomeTeamScore > AwayTeamScore then 3
when HomeTeamScore < AwayTeamScore then 0
end as HomeTeamPoints,
AwayTeam,
AwayTeamScore,
case when AwayTeamScore = HomeTeamScore then 1
when AwayTeamScore > HomeTeamScore then 3
when AwayTeamScore < HomeTeamScore then 0
end as AwayTeamPoints
from vW_Match
这将为您提供不同列中两个团队的结果。