※ 引述《JeremyJoung (J.J.)》之銘言:
: 老實說 這個需求不算難 但是你指定的輸出格式並不佳
: 大幅提升了計算難度
: 理想的輸出最好是
: 同一個人在"同一行"內用多個欄位來表示UNIT的差異 而不是用"多行"顯示
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^這個顯示方法也是ok的
主要是找出有換單位的人,顯示方式倒是其次
但若一個人不只換了一個單位
您建議的顯示方式是否就不適合了呢?
: SELECT a.*
: FROM table AS a
: LEFT JOIN table b ON a.id=b.id && a.year=b.year-1 && a.unit<>b.unit
: LEFT JOIN table c ON a.id=c.id && a.year=c.year+1 && a.unit<>c.unit
: WHERE a.id IN(SELECT id FROM table GROUP BY id HAVING COUNT(DISTINCT unit) >1)
: ##先取有換單位的人
: && (b.id IS NOT NULL || c.id IS NOT NULL)
: ORDER BY a.id, a.year DESC
: 這還不是最好的算式 但是夠快了 簡短比較重要
: a.id IN() 是用來加速的 實際上可以完全不用
: 缺點是年份要相連 否則抓不到
: 也有年分不用相連的方法 但是又會更複雜
: ※ 引述《Schematic (小小寶的媽)》之銘言:
: : 資料庫名稱:SQL SERVER
: : 資料庫版本:2012
: : 內容/問題描述:
: : 列出某位員工在哪一年換了單位,沒有換單位的員工不用列出
: : Num id year unit
: :