【发布时间】:2016-06-03 22:30:03
【问题描述】:
根据下面的查询,我有几个问题:
SELECT
RANK() OVER (PARTITION BY a.LeagueID ORDER BY a.LeagueID) AS WeekNumber,
a.TeamID AS HomeTeamID,
a.TeamAbbreviation AS HomeTeam,
b.TeamID AS AwayTeamID,
b.TeamAbbreviation AS AwayTeam,
a.LeagueID AS HomeLeague,
b.LeagueID AS AwayLeague
FROM
dbo.Team a
CROSS JOIN
dbo.Team b
WHERE
a.TeamID != b.TeamID
AND b.TeamAbbreviation = 'CHE' OR a.TeamAbbreviation = 'CHE'
AND a.LeagueID = b.LeagueID
当前查询显示以下结果:
这是不正确的,我需要帮助重构结果。我想要实现的是:
对于球队参加的每场比赛(在本例中为“CHE”),WeekNumber 列需要更新以包含正确的赛程。有多个球队,所以当所有球队打了1周时,它应该显示WeekNumber ‘1’,然后下一轮比赛应该显示WeekNumber ‘2’等等。
它显示“CHE”与所有球队比赛,而实际上他们应该只与同一联赛的球队比赛(因此 a.LeagueID = b.LeagueID)。在屏幕截图中,它显示了球队与来自其他联赛(其他联赛 ID)的其他球队比赛。
我需要进行哪些更改才能使其正常工作?
期望的输出:
WeekNumber HomeTeamID HomeTeam AwayTeamID AwayTeam HomeLeague Away League
1 4 ARS 19 CHE 1 1
2 14 BRC 19 CHE 1 1
3 15 BRR 19 CHE 1 1
【问题讨论】:
-
你能显示你想要的输出吗?
-
@Aldrin 包括您提到的所需输出
标签: sql sql-server