![]() ![]() ![]() ![]() |
|||||
|
|||||
樓主 dragon ![]()
![]() |
SET @i=7 set @J=0 WHILE (@i >= 0) BEGIN Update INVENTORYBOOK SET STKLEND1=BALANCE, BALANCE=INITIAL+STKPRHS0-STKPRHS1-STKSALE0+STKSALE1+STKALLT1-STKALLT2+STKBROW0-STKBROW1+STKADST, @J=INITIAL+STKPRHS0-STKPRHS1-STKSALE0+STKSALE1+STKALLT1-STKALLT2+STKBROW0-STKBROW1+STKADST WHERE INVENTORYBOOK.SDATE = CONVERT(VARCHAR(10), GETDATE()-@i , 111) AND INVENTORYBOOK.GWN='0000' AND PROD='20401722' Update INVENTORYBOOK SET INITIAL=@J WHERE INVENTORYBOOK.SDATE = CONVERT(VARCHAR(10), GETDATE()-@i+1 , 111) AND INVENTORYBOOK.GWN='0000' AND PROD='20401722' SET @J=0 SET @i = @i -1 END 請問上述程式 將料號條件 拿掉 則 @J 會變為0 該如何讓每個料號 都能寫入隔天的@J 裡面
搜尋相關Tags的文章:
[ 迴圈 ] ,
本篇文章發表於2015-11-04 15:49 |
1樓 |
不懂這位啥要用迴圈
隔天你自已也寫了 getdate()+1 因為隔天還沒到 所以應該要insert吧!
本篇文章回覆於2015-11-04 17:58
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
2樓
作者回應
dragon ![]() |
因為要重算7天內的庫存
所以要用迴圈 測試一個料號的資料 是正常 如果要跑所有料號 7天內的資料就會錯誤
本篇文章回覆於2015-11-04 18:01
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
3樓 |
建議你把要update的資料來源先塞到暫存資料表
selet BALANCE,INITIAL+STKPRHS0-STKPRHS1-STKSALE0+STKSALE1+STKALLT1-STKALLT2+STKBROW0-STKBROW1+STKADST, INITIAL+STKPRHS0-STKPRHS1-STKSALE0+STKSALE1+STKALLT1-STKALLT2+STKBROW0-STKBROW1+STKADST into #temp from INVENTORYBOOK WHERE INVENTORYBOOK.SDATE = CONVERT(VARCHAR(10), GETDATE()-@i , 111) AND INVENTORYBOOK.GWN='0000' AND PROD='20401722' 然後看看對不對 在join回去 update
本篇文章回覆於2015-11-04 20:43
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
4樓 |
整理SQL,將料號條件時,根本無法確認異動資料,建議可使用: 1. OUTPUT子句 異動後會將異動資料傳回,再與次段JOIN。 https://msdn.microsoft.com/zh-tw/library/ms177564%28v=sql.120%29.aspx?f=255&MSPPError=-2147217396 2. 一組SQL (以WITH遞迴運算) 不過由指令中,已確知不會有跳日的問題? 因為都是+1 (次日)。
本篇文章回覆於2015-11-04 21:52
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
回覆 |
如要回應,請先登入. |