2012年10月16日 星期二

利用 ROW_NUMBER 函數產生序號欄位


需求:
找出2012年,每筆採購資料的第1次採購日期


說明:
採購單TABLE 為 PURTH
TH001 單別
TH002 單號
TH003 序號
TH004 品號
TH014 進貨日


範例:
SELECT *
FROM
(
select TH001,TH002,TH003,TH004,
ROW_NUMBER() OVER(PARTITION BY TH004 ORDER BY TH014) AS RN
FROM PURTH
WHERE
SUBSTRING(TH014,1,4) LIKE '2012'
) B

WHERE RN='1'

解析:
1.ROW_NUMBER() 裡面的 PARTITION BY TH004,表示以品號為切割區段,不同品號即重新排序
2.加上 ORDER BY TH014 ,表示以日期排序
3.綜合以上,即依進貨日、將相同品號排序、產生序號
4.包成另一TABLE以後,將裡面的序號 1(WHERE RN='1' ) SELECT出來