select distinct b.NAME_CHI, b.NAME_ENG, c.STAFFCODE, c.APPENDDATE, a.SCHYEAR, a.CLASSCODE, a.STAFFSEQ from TB_STF_APPOINTMENT c left outer join VW_ASR_STAFF b on c.suid=b.suid and c.STAFFCODE=b.STAFFCODE left outer join TB_SCH_CLSTCHR a on c.STAFFCODE=a.STAFFCODE and a.suid=c.suid and a.SCHYEAR=? where (c.APPENDDATE is null) order by 5, 6, 7, c.STAFFCODE WebSAMS 的同工好!小弟用以上的 SQL ,可以抽到我想要的資料,不過有些已離職的同事,同樣也出現了,而我入到 Staff 去看,發現已離職的同事,在系統 ( [S-STF04-03] 教職員資料 > 教職員概況 > 離職 ) 內是有填上離職的資訊,請問我是否用錯 table?以上 SQL 應如何修改?
可以JOIN 一個叫 TB_STF_EMPLOYPERIOD,這個記錄老師在職時段及離職原因。 只要FILTER出聘用結束日期為NULL就代表在職了。 select distinct b.NAME_CHI, b.NAME_ENG, c.STAFFCODE, c.APPENDDATE, a.SCHYEAR, a.CLASSCODE, a.STAFFSEQ from wsadmin.TB_STF_APPOINTMENT c left outer join wsadmin.VW_ASR_STAFF b on c.suid=b.suid and c.STAFFCODE=b.STAFFCODE left outer join wsadmin.TB_SCH_CLSTCHR a on c.STAFFCODE=a.STAFFCODE and a.suid=c.suid and a.SCHYEAR=? left outer join wsadmin.TB_STF_EMPLOYPERIOD d on c.suid=d.suid and c.STAFFCODE=d.STAFFCODE and d.EMPENDDATE is null where (c.APPENDDATE is null) order by 5, 6, 7, c.STAFFCODE
謝謝你,最後我參考了你的SQL,改成以下的。 select distinct b.NAME_CHI, b.NAME_ENG, a.STAFFCODE, a.EMPENDDATE, c.SCHYEAR, c.CLASSCODE, c.STAFFSEQ from wsadmin.TB_STF_EMPLOYPERIOD a left outer join wsadmin.VW_ASR_STAFF b on a.suid=b.suid and a.STAFFCODE=b.STAFFCODE left outer join wsadmin.TB_SCH_CLSTCHR c on a.STAFFCODE=c.STAFFCODE and c.suid=a.suid and c.SCHYEAR=? where (a.EMPENDDATE is null) order by 5, 6, 7, a.STAFFCODE