【发布时间】:2016-06-15 20:17:41
【问题描述】:
我正在尝试执行 GROUP BY 'TeamID',但在插入 GROUP BY 子句后出现以下错误:
选择列表中的“po.PlayerWeighting”列无效,因为它既不包含在聚合函数中,也不包含在 GROUP BY 子句中。
我应该将 GROUP BY 子句放在哪里才能工作,它将所有团队权重分组到 TeamID?
SELECT DISTINCT TeamID,
CASE WHEN TeamID = 0 THEN 0
ELSE SUM(po.playerWeighting) OVER(PARTITION BY po.TeamID)
END TeamWeight,
ABS(CHECKSUM(NewID())) % 10 + 1 AS Form
FROM(
SELECT pl.*,
ROW_NUMBER() OVER(PARTITION BY pl.TeamID, pl.Position ORDER BY NEWID()) AS Rnk
FROM(
SELECT DISTINCT p.PlayerID, p.Position, p.PlayerWeighting, p.FirstName, p.Surname, 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)
pl) po
WHERE (po.Position = 'GK' and po.rnk = 1) OR
(po.Position = 'DF' and po.rnk <= 4) OR
(po.Position = 'MF' and po.rnk <= 4) OR
(po.Position = 'FW' and po.rnk <= 2)
GROUP BY TeamID
【问题讨论】:
标签: sql sql-server