0

複数のユーザーの同じレコードタイプのデータを含むテーブルがあります

examscoreid | examscorenum | examresult | userid | examtype
55                 89             P        7760       1 
54                 78             P        7760       3 
53                 90             P        7760       5 
52                 89             P        7760       4
41                 80             P        7666       2
44                 80             P        7666       2

異なるexamtypeのexamscorenumとexamtypeがグループ化された最新のexamscoreidが必要です

結果は次のようになります

   examscoreid | examscorenum | examresult |     userid | examtype
    55                 89             P        7760       1 
    54                 78             P        7760       3 
    53                 90             P        7760       5 
    44                 80             P        7666       2

ユーザーID7666には同じ試験タイプの2つの行がありますが、必要な結果には最新の試験スコアIDが含まれている必要があります(41ではなく44が取得されました)

同様に、ユーザーデータ全体が必要です

サンプルクエリ

SELECT examscorenum  FROM `exams` WHERE userid in (7760,7666) group by examtype,userid order by examscoreid desc

データを取得しましたが、ユーザーID 7666の場合、44ではなくexamscoreid41の結果を取得します

4

1 に答える 1

0

以下はどうでしょうか。

create table #exams
(
    examscoreid int,
    examscorenum int,
    examresult varchar(1),
    userid int,
    examtype int
)

insert into #exams values(55, 89, 'P', 7760, 1)
insert into #exams values(54, 78, 'P', 7760, 3)
insert into #exams values(53, 90, 'P', 7760, 5)
insert into #exams values(52, 89, 'P', 7760, 4)
insert into #exams values(41, 80, 'P', 7666, 2)
insert into #exams values(44, 80, 'P', 7666, 2)

SELECT distinct t1.examscoreid, t1.examscorenum, t1.examresult, t1.userid, t1.examtype 
FROM #exams t1
JOIN 
(
    select userid, max(examscoreid) as maxscoreid, examtype
    from #exams 
    group by userid, examtype
) t2
    on t1.userid = t2.userid
WHERE t1.userid in (7760,7666) 
    AND t1.examscoreid = t2.maxscoreid
order by t1.examscoreid desc

drop table #exams
于 2012-04-10T17:46:48.170 に答える