你好,我參考了常用SQL參考庫 Answer 9,曾自行修改,但並不成功。我想有以下修改,想請教一下可以如何修改。 修改如下: 1. 將全年科目成績,改為今年T1A1成績、今年T1A2成績...上年T1A1成績、上年T1A2成績... 前年T2A2成績、前年T2A3成績。 2. 不用顯示排名 3. 最後一顯示同學的DSE成績。 輸入為學年及科目代碼。期望的結果可以參考附件。有勞指教,謝謝。
你好 在CDR找的SQL , 是接近你想要的效果, 當然要附加多些語句。 可以參考以下的SQL , 已經寫了上年的T1A1分數, 請再增加 上年 和 前年的分數 今年 是用 schyear , 上年 是用 schyear - 1 , 前年 是用 schyear - 2 請參考藍色的部分。 schyear 今年T1A1 1101 今年T1A2 1102 今年T1A3 1103 今年T2A1 1201 今年T2A2 1202 今年T2A3 1203 schyear - 1 上年T1A1 1101 上年T1A2 1102 上年T1A3 1103 上年T2A1 1201 上年T2A2 1202 上年T2A3 1203 schyear - 2 前年T1A1 1101 前年T1A2 1102 前年T1A3 1103 前年T2A1 1201 前年T2A2 1202 前年T2A3 1203 而抽取DSE分數比較複雜, 要每個學生獨立抽取DSE英文科成績, 而DSE英文科的CODE是'A020' 請參考紫紅色部份。 select a.CLASSCODE '班別', a.CLASSNO '班號', a.ENNAME '英文姓名', c.en_des 'Subject', c.ch_des '科目', a.SCHYEAR '學年', d.sysscore '今年T1A1成績', e.sysscore '今年T1A2成績', f.sysscore '今年T1A3成績', g.sysscore '今年T2A1成績', j.sysscore '去年T1A1成績' , (select b2.SUBJGRDLVL from wsadmin.tb_hke_dsecandinfo a2 left outer join wsadmin.tb_hke_dsesubjresult b2 on a2.suid=b2.suid and a2.schcode=b2.schcode and a2.candno=b2.candno and b2.subjcode='A020' and a2.stuid=a.stuid and a2.examyear=a.schyear and a2.examyear=b2.examyear ) '今年DSE成績' from wsadmin.VW_STU_LATESTSTUDENT a left outer join wsadmin.TB_ASR_SUBJASSESSDATA d on a.SUID = d.SUID and a.SCHLVL = d.SCHLEVEL and a.SCHSESS = d.SCHSESSION and a.SCHYEAR = d.SCHYEAR and a.STUID = d.STUID and d.TIMESEQ = 1101 and d.subjcode='165' left outer join wsadmin.TB_ASR_SUBJASSESSDATA e on a.SUID = e.SUID and a.SCHLVL = e.SCHLEVEL and a.SCHSESS = e.SCHSESSION and a.SCHYEAR = e.SCHYEAR and a.STUID = e.STUID and e.TIMESEQ = 1102 and e.subjcode=d.subjcode left outer join wsadmin.TB_ASR_SUBJASSESSDATA f on a.SUID = f.SUID and a.SCHLVL = f.SCHLEVEL and a.SCHSESS = f.SCHSESSION and a.SCHYEAR = f.SCHYEAR and a.STUID = f.STUID and f.TIMESEQ = 1103 and f.subjcode=d.subjcode left outer join wsadmin.TB_ASR_SUBJASSESSDATA g on a.SUID = g.SUID and a.SCHLVL = g.SCHLEVEL and a.SCHSESS = g.SCHSESSION and a.SCHYEAR = g.SCHYEAR and a.STUID = g.STUID and g.TIMESEQ = 1201 and g.subjcode=f.subjcode left outer join wsadmin.TB_ASR_SUBJASSESSDATA j on a.SUID = j.SUID and a.SCHLVL = j.SCHLEVEL and a.SCHSESS = j.SCHSESSION and a.SCHYEAR-1 = j.SCHYEAR and a.STUID = j.STUID and j.TIMESEQ = 1101 and j.subjcode=g.subjcode left outer join wsadmin.tb_hse_common c on a.suid=c.suid and d.subjcode=c.code_id and c.tb_id='SBJ' where a.SCHYEAR=? and a.classlvl='S6' order by a.CLASSCODE, a.CLASSNO