2012-01-10 4 views
0

を返します。ネストされたselect文のサブクエリは、私は2人のテーブルの学生を持っていますし、他は 学生はすべての学生の最初の名前などの情報、姓とユニークなidnumber が含まれているとマークはマークが各学生のマークのための学生 によって得る含まれたマークである複数の行

は、今私は、学生の情報と

出力はこのようにする必要があり、単一のレコード内のすべての3年間のマークが含まれているクエリをデザインしたいマークテーブルの3のエントリを持つことになります三年から学生すなわち、毎年のために保存されています。

First Name | Last Name | 1st Year Marks | 2nd Year Marks | 3rd Year Marks

+1

SQLステートメントを投稿した方が助けになるでしょう。 – Aaron

+1

少なくとも、テーブルの完全定義 – jclozano

答えて

0

私はあなたのネストされた文はどのようなものかわかりませんが、あなたはこの線に沿って何かをしたい:

select 
    s.firstname, 
    s.lastname, 
    sum(case when m.year = m2.minyear then m.mark else 0 end) as `1st Year Marks`, 
    sum(case when m.year = m2.minyear+1 then m.mark else 0 end) as `2nd Year Marks`, 
    sum(case when m.year = m2.minyear+2 then m.mark else 0 end) as `3rd Year Marks` 
from 
    students s 
    inner join marks m on 
     s.student_id = m.student_id 
    inner join (select student_id, min(year) as minyear from marks group by student_id) m2 on 
     s.student_id = m2.student_id 
group by 
    s.firstname, 
    s.lastname 

私はここで、条件付き合計だけでなく、ダイナミック年間、学生は可能性があるのでをしました異なる時に到着する。これは、 "Freshman"、 "Sophomore"などのような年表があれば簡単になり、学生がその年をいつ完成したかを記録していますが、これはうまくいくでしょう。

0

クエリ以下の試みは..私は学生やマークが列

選択stu.firstname +でsstudent IDを持って検討しています '|' + stu.lastname + '|' + marks.1styr + '|' + mark.2nd yr + '|' + marks.3rdyr from stu、marks stu.uniqueid = marks.uniqueid

関連する問題