2012年3月7日 星期三

轉檔產生序號進階版

以往轉單據時,有時候原始資料並未存在單據的每一個項目序號,這時候,我們就要自行產生,以往的方式就是對原始資料下count(*),這時候其實效能並不好。

利用Identity語法轉到記憶體(暫存table)裡面,可以省下不少時間。

--轉單據明細序號自動產生作法進階版(以90萬筆為例)

/*此作法一定不會重覆KEY值,而且快速*/

--先將所有資料寫入暫存TABLE,此時可以產生種子序號(Identity)

SELECT identity(int) AS ID0, * INTO #TMP_FDRSALDI

FROM FDRSALDI

--暫存檔依序號排

SELECT * FROM #TMP_FDRSALDI ORDER BY ID0

--得到最後的結果,此結果可直接寫入要轉入的目標TABLE

SELECT SHID, SHNO, (SELECT COUNT(*) FROM #TMP_FDRSALDI WHERE SHNO = D.SHNO AND ID0 <= D.ID0) AS SRNO2
, WARE, GONO, GONO1, GONO2, QTY, PRICE, AMT
FROM #TMP_FDRSALDI D
ORDER BY SHNO, SRNO2

沒有留言: