【发布时间】:2016-06-05 06:03:54
【问题描述】:
好的,我有这个查询,它可以工作:
SELECT games.week, local_team, games.local_goals, visitor_team, games.visitor_goals, winner1
FROM games
JOIN (SELECT local_team = teams.team_name, team_number FROM teams) AS local_team ON games.team_number_loc = local_team.team_number
JOIN (SELECT visitor_team = teams.team_name, team_number FROM teams) AS visitor_team ON games.team_number_vis = visitor_team.team_number
JOIN (
SELECT CASE
WHEN games.local_goals < games.visitor_goals
THEN games.team_number_vis
WHEN games.local_goals > games.visitor_goals
THEN games.team_number_loc
WHEN games.local_goals = games.visitor_goals
THEN null
END AS winner1,
game_number
FROM games)
AS winner1 ON games.game_number = winner1.game_number
但是我需要为赢得比赛的球队的名称添加一列,我在想这样的事情应该这样做:
SELECT games.week, local_team, games.local_goals, visitor_team, games.visitor_goals, winner1, winner2
FROM games
JOIN (SELECT local_team = teams.team_name, team_number FROM teams) AS local_team ON games.team_number_loc = local_team.team_number
JOIN (SELECT visitor_team = teams.team_name, team_number FROM teams) AS visitor_team ON games.team_number_vis = visitor_team.team_number
JOIN (
SELECT CASE
WHEN games.local_goals < games.visitor_goals
THEN games.team_number_vis
WHEN games.local_goals > games.visitor_goals
THEN games.team_number_loc
WHEN games.local_goals = games.visitor_goals
THEN null
END AS winner1,
game_number
FROM games)
AS winner1 ON games.game_number = winner1.game_number
JOIN
(SELECT CASE
WHEN winner1 = teams.team_number
THEN teams.team_name
WHEN winner1 is null
THEN 'no winner'
END AS winner2,
teams.team_number
FROM teams) AS winner2 ON winner2.team_number = winner1
但是当我尝试我得到这个错误时:
消息 207,第 16 级,状态 1,第 153 行 列名“winner1”无效。
消息 207,第 16 级,状态 1,第 155 行 列名“winner1”无效。
我希望的输出与另一段代码完全相同,只是添加了获胜团队名称的列。
【问题讨论】:
-
game_number是表games的PK吗? -
不是,我只是添加了它,这样我才能使第一个查询工作
标签: sql sql-server database select join