Sql server SQL Server:使用具有反向团队名称的分区

Sql server SQL Server:使用具有反向团队名称的分区,sql-server,partition-by,Sql Server,Partition By,下面的代码平均(对于任何给定的游戏)团队最近5次相遇的分数,即橙色的一行,所有以绿色突出显示的游戏都是平均值 我的问题是我想要一个类似的反向计算(游戏是AvC,但我需要CvA游戏的平均值,即蓝色突出显示)。 我曾尝试反转团队1和团队2,以相反的顺序对团队进行排序,但结果仍然是排序并提供相同的结果 我假设我需要某种方法来反转当前行中的team1和team2(例如,如果日期大于getnow()),这将允许平均值起作用。 我希望有人能告诉我,我把事情复杂化了,如果有什么简单的解决办法我就错过了。一如既

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

我的问题是我想要一个类似的反向计算(游戏是AvC,但我需要CvA游戏的平均值,即蓝色突出显示)。 我曾尝试反转团队1和团队2,以相反的顺序对团队进行排序,但结果仍然是排序并提供相同的结果

我假设我需要某种方法来反转当前行中的team1和team2(例如,如果日期大于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

通过计算平均值,然后在单独的表格中插入行号来识别每个H2H,从而解决了问题

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

然后使用以下条件(team1=team2,team2=team1,行数=1)左连接回原始表。使用行号解决了加入表格时日期不对齐的问题。

我想我可能已经解决了这个问题,在一个单独的表格中创建了头对头的平均值,然后进行了两次单独的加入(团队1和团队2颠倒)。