意见和随机数

时间:2016-06-13 09:50:48

标签: sql sql-server

我在下面有一个简单的表格,它输出了在第1周,联赛1中所有球队中的所有球员。

SELECT DISTINCT p.PlayerID, p.Position, t.TeamID, t.TeamAbbreviation, f.WeekNumber
FROM dbo.Fixture f
INNER JOIN dbo.League l ON f.LeagueID = l.LeagueID
INNER JOIN dbo.Team t ON l.LeagueID = t.LeagueID
INNER JOIN dbo.Player p ON t.TeamID = p.TeamID
WHERE f.WeekNumber = 1 and l.LeagueID = 1

这只输出一个很长的列表,我需要的是以下内容,我不知道怎么做,因为我是t-sql的初学者:

  • 在所有球员中(每队有20名球员),每队只选择一组随机的11名球员。然而,在11名球员中,必须有所需数量的职位:

1 GK,4 DF,4 MF,2 FW(这些字母缩写由每个玩家分配位置的“位置”字段确定)

然后我想要的是展示队伍互相对抗。例如,如果在第1周,teamID 1正在玩teamID 4,那么第1组的11名玩家将与第4组中的11名玩家展示在一起。为其他团队执行此操作。灯具已经在灯具表中设置(附带截图)

如何实现这一目标?

夹具表:

enter image description here

当前查询结果:

enter image description here

1 个答案:

答案 0 :(得分:5)

您需要使用ROW_NUMBER()来实现此目标:

(teamID,position)

这将对每个组WHERE进行随机排名,最后一个GK子句将选择1 DF,4 MF,4 FW,2 {{ 1}}。