如何遍历每个可能的值匹配(两列)并执行计算? (大学橄榄球相关)

时间:2015-08-11 22:27:33

标签: sql sql-server tsql

我创建了一个程序,通过使用变量@ Team1和@Team2预测大学橄榄球比赛线。在当前设置中,手动输入这些团队。

例如: @Team1 = 'Ohio St.', @Team2 = 'Southern Miss.' 然后,我的计算将通过一系列关于统计比较,计划强度等的计算来计算假设的游戏线(在这种情况下,Ohio St. -39。)

这是我需要你帮助的地方:我正在努力将这个线预测系统变成一个排名系统,将每个团队从最大到最差排名。我想把每个团队都放在我的团队表中,然后通过每个可能的比赛进行计算。然后,根据谁比那些给予一周的每支球队最具优势的球队,以及谁拥有最少的优势,对球队进行排名。

有什么想法吗?我玩弄了将计算转换为函数并通过这种方式传递值的想法,但不知道从哪里开始。

谢谢!

1 个答案:

答案 0 :(得分:0)

为虚构的列名称道歉,但如果将proc转换为将两个团队名称作为参数的函数,则以下内容应该执行您想要的操作:

Select a.Name as Team1
  , b.Name as Team2
  , fn_GetStats(a.Name, b.Name)
from TeamsList a
inner join TeamsList b
  on a.Name > b.Name --To avoid duplicate rows
order by 3 desc

联接将创建所有可能的唯一组合的列表(例如TeamB和TeamA,但不包括TeamA和TeamB或TeamA和TeamA)。

假设proc现在只输出一个值,这似乎是最简单的解决方案。您也可以执行相同的连接,然后使用结果循环执行proc。