我正在尝试使用SQL来确定球队在NCAA锦标赛中走的距离。我有一个包含3个表的数据库。一张桌子列出每场比赛的结果,一张桌子列出各队,而一张桌子则根据比赛的日数进行比赛。以下是在3张桌子上继续前进的结果: 结果表:
Season DayNum WTeamID WScore LTeamID LScore WLoc NumOT
<dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <chr> <dbl>
1 1985 136 1116 63 1234 54 N 0
2 1985 136 1120 59 1345 58 N 0
3 1985 136 1207 68 1250 43 N 0
4 1985 136 1229 58 1425 55 N 0
5 1985 136 1242 49 1325 38 N 0
6 1985 136 1246 66 1449 58 N 0
Teams Table:
TeamID TeamName FirstD1Season LastD1Season
<dbl> <chr> <dbl> <dbl>
1 1101 Abilene Chr 2014 2019
2 1102 Air Force 1985 2019
3 1103 Akron 1985 2019
4 1104 Alabama 1985 2019
5 1105 Alabama A&M 2000 2019
6 1106 Alabama St 1985 2019
Rounds Table:
daynum round
1 134 Play-in Game
2 135 Play-in Game
3 136 Round of 64
4 137 Round of 64
5 138 Round of 32
6 139 Round of 32
使用以下代码,除了一个团队之外,它对所有团队都很有用。
SELECT a.season, b.teamname, c.round
FROM ncaatourney AS a
JOIN teams AS b
ON a.lteamid = b.teamid
JOIN rounds AS c
ON a.daynum = c.daynum
这给了我以下结果:
season teamname round
1 1985 Iowa Round of 64
2 1985 Purdue Round of 64
3 1985 Lehigh Round of 64
4 1985 USC Round of 64
5 1985 Ohio Round of 64
6 1985 Washington Round of 64
问题在于,当团队的ID显示为lteamid时,就会用到它,这意味着我最终并没有获得冠军。有没有一种方法可以编写CASE语句或IF / ELSE,以便在daynum = 154(冠军赛的当天)出现在wteamid列中但执行上述操作时,如果一个队友出现在回合中,则会给我“冠军”否则加入吗?还是有其他方法可以进行加入?