0

次のように、いくつかのクラスルームテストでの2つのコースの評価として見ることができる表があります。

student_ID     Evaluation           Course1   Course2
------------------------------------------------------
1                   5                 88         93
2                   4                 70         87
1                   5                 93         90
2                   5                 99         91
3                   3                 65         60
3                   4                 88         70

学生がいる場合、各学生の Evaluation=5 の結果を取得する必要があります。その学生が複数の Evaluation=5 を持っている場合、クエリはそれらのいずれかのみを表示します。上記の例のテーブルの場合、クエリの結果は次のようになります。

student_ID     Evaluation           Course1   Course2
------------------------------------------------------
1                   5                 88         93
2                   5                 99         91

もちろん、私の実際のテーブルでは、「コース」の数は 2 を超えています。

助けてくれてありがとう。

4

1 に答える 1

2

ごとに 1 つのレコードのみを取得したいので、連番を生成する which をstudent_id使用できます。ROW_NUMBER()生成された数値は常に開始さ1れ、この場合、すべてのパーティションの行を除外するために使用できますStudent_ID

SELECT  Student_ID, Evaluation, Course1, Course2
FROM    
        (
            SELECT  Student_ID, Evaluation, Course1, Course2,
                    ROW_NUMBER() OVER (PARTITION BY Student_ID 
                    ORDER BY Student_ID) rn
            FROM    TableName
            WHERE   Evaluation = 5
        ) a
WHERE   a.rn = 1
于 2013-09-29T20:51:00.437 に答える