0

我的数据库中有 4 个主要表。

  1. 季节 --> 季节ID
  2. 试验 --> 试验ID
  3. 竞争 --> CID,名称
  4. 营地 --> campID,DivisionID(FK)
  5. 部门 ---> 部门 ID
  6. 参赛者--->参赛者ID

现在参赛者属于/是一个部门的成员。

那么一个部门属于一个阵营。

所有这些都导致了我的性能表。

性能表

SeasonID|TrialID|CampID|DivID|CompetionID|CtestantID|Score1 |Score2 |Total
1           1        1    1       1          1         20      20     40
1           1        1    1       2          1         20      15     30 
1           2        1    1       1          2         10       5     15
1           2        1    1       2          2         5        5     10
1           2        1    1       1          1         10      30     40
1           2        1    1       2          1         20      10     30

如何查询该成绩表,以提供每个参赛者在每场比赛中的比赛名称、总分和排名(排名高于总分)按试验和季节?

例子:

在第 1 季和第 2 季中,我想要:

 SeasonID| TrialID | ContestantID| Competition | TotalScore | Rank
   1          2           1            1            40         1
   1          2           2            1            15         2
   1          2           1            2            30         1
   1          2           2            2            10         2

我该怎么做?我已经尝试过表变量、数据透视和连接,但我只能按比赛排名,但我不知道如何汇总结果以获得上述结果!

4

1 回答 1

0

我不确定你是如何计算你想要的结果的。我认为这就是你所追求的,但如果是这样,TotalScore你的问题的预期结果应该是最后一条记录的 10,而不是 20。

SELECT SeasonID, TrialID, ContestantID, CompetitionID, Total,
    DENSE_RANK() OVER(PARTITION BY CompetitionId ORDER BY Total DESC) AS [Rank]
FROM PerformanceTable
于 2012-06-24T00:49:58.190 回答