SQL 查詢抽取留級紀錄

本文由 sososo 在 2014-07-04 發表於 "WebSAMS 討論區" 討論區

  1. 56934772

    sososo
    Expand Collapse

    文章:
    16
    讚:
    0
    請問怎樣可以抽取以下資料?

    Class, ClassNo, CName, 留級級別及次數, Age(至9月1日前), Sex

    如沒有留級紀錄就不顯示, 謝謝﹗
     
  2. 57678715

    edb-escm
    Expand Collapse

    文章:
    434
    讚:
    0
    老師請參考以下SQL,留意SQL需要輸入兩個年份,"b.schyear<="(第1個)為統計資料所抽取數據的年份上限,"b.schyear="(第2個)為使用那一個學年的學生資料,
    假設老師需要知道2012學年的學生留級紀錄,前者輸入2012,統計資料就不會包括2013年份的留級紀錄
    select
    b.classcode 'Class',
    b.classno 'ClassNo',
    b.chname 'CName',
    c.classlvl '留級級別',
    c.repeatcount '留級次數',
    (case when DAY(b.dob)>=1 and MONTH(b.dob)>=9 then (year(getdate())-year(b.dob)-1)else year(getdate())-year(b.dob) end)'Age',b.sex
    from vw_stu_lateststudent b
    left outer join
    (select b.stuid,b.classlvl,count(b.classlvl) 'repeatcount'
    from vw_stu_lateststudent b
    where b.status='1' and b.schyear<=?
    group by b.stuid,b.classlvl) c
    on c.stuid=b.stuid
    where b.schyear=? and c.repeatcount > 0
    order by b.classlvl, b.classcode, b.classno
     
    #2 edb-escm, 2014-07-07
  3. 56934772

    sososo
    Expand Collapse

    文章:
    16
    讚:
    0
    謝謝回覆! 可能我表達得不夠清晰, 現在修正如下:

    請問可以做到嗎?
    現在Class, 現在ClassNo, CName, 該學生過往所有留級級別及次數, Age(至9月1日前), Sex
    如該學生沒有任何留級紀錄, 就不顯示該學生資料, 謝謝﹗

    e.g.
    3D 13 李XX S2(2), S3(1) 17 M
     
  4. 57678715

    edb-escm
    Expand Collapse

    文章:
    434
    讚:
    0
    老師請參考以下SQL,只能夠將留級級別一行顯示以及一併計算留級次數:
    select
    b.classcode 'Class',
    b.classno 'ClassNo',
    b.chname 'CName',
    c.repeatclass '留級級別',
    c.repeatcount '留級次數',
    (case when DAY(b.dob)>=1 and MONTH(b.dob)>=9 then (year(getdate())-year(b.dob)-1)else year(getdate())-year(b.dob) end)'Age',b.sex
    from vw_stu_lateststudent b
    left outer join
    (select b.stuid,list(distinct b.classlvl) 'repeatclass',count(b.classlvl) 'repeatcount'
    from vw_stu_lateststudent b
    where b.status='1' and b.schyear<=?
    group by b.stuid) c
    on c.stuid=b.stuid
    where b.schyear=? and c.repeatcount > 0
    order by b.classlvl, b.classcode, b.classno
     
    #4 edb-escm, 2014-07-07