SQL 服务器:使用反向团队名称的分区依据

SQL Server: Using partition-by with reversed team names

下面的代码平均(对于任何给定的比赛)球队最近 5 次相遇的分数,即对于橙色行,所有以绿色突出显示的比赛都是平均的。

我遇到的问题是我想要一个类似的反向计算(游戏是 AvC,但我需要 CvA 游戏的平均值,即以蓝色突出显示)。 我试图颠倒 team1 和 team2,以相反的顺序连接团队,但它仍然最终排序并提供相同的结果。

我假设我需要一些方法来仅在当前行中反转 team1 和 team 2(例如,如果日期大于 getnow()),这将允许平均值工作。 我希望有人能告诉我,我把事情搞得太复杂了,如果有一些简单的解决方法,我就错过了。一如既往地感谢任何帮助。

SELECT
AVG(score) OVER (Partition by (team1+team2) ORDER BY date ASC ROWS BETWEEN 5 PRECEDING AND 1 PRECEDING) AS Average_H2H_Score
FROM Scores

最终通过计算平均值解决了问题,然后插入一个单独的 table 以及一个行号来标识每个 H2H。

ROW_NUMBER() OVER(PARTITION BY team1+team2 ORDER BY date DESC) AS RN

然后使用以下条件(team1=team2,team2=team1,行号=1)将 LEFT JOIN 返回到原始 table。使用行号解决了加入 table 时日期不对齐的问题。