次の MS SQL クエリを使用して、3 つのテーブル (tTeam、tPlayer、および tScores) を相互参照して、合計「ネット スコア」、「総スコア」、および「ポジション」をネット スコアとチームで並べ替えて取得します。
SELECT TeamID, Team, NetScore, Gross,
CASE WHEN cnt > 1 THEN 'T' + CAST(rnk AS VARCHAR(5))
ELSE CAST(rnk AS VARCHAR(5))
END Pos
FROM (
SELECT tTeam.TeamID,
tTeam.Title AS Team,
SUM(CONVERT(INT, tScores.Net_Score)) AS NetScore,
SUM(CONVERT(INT, tScores.Out_Score) + CONVERT(int, tScores.In_Score)) AS Gross,
rank() OVER ( ORDER BY SUM(CONVERT(INT, tScores.Net_Score))) rnk,
COUNT(*) OVER ( PARTITION BY SUM(CONVERT(INT, tScores.Net_Score))) cnt
FROM tScores INNER JOIN tPlayer ON tScores.PlayerID = tPlayer.PlayerID INNER JOIN tTeam ON tPlayer.TeamID = tTeam.TeamID
WHERE tTeam.TournamentID = 13
GROUP BY tTeam.TeamID, tTeam.Title ) temp
ORDER BY NetScore, Team
クエリはうまく機能しますが(ここで助けが必要です)、チームごとに「4人の最低プレーヤーのネットおよびグロススコア」を計算するだけでよいのに、チームごとにすべてのプレーヤーのネットおよびグロススコアを計算していますそれだけ。
私はこれで髪を引っ張るのに最後の1日半を費やしました。どんな助けでも大歓迎です.
前もって感謝します!