台灣最大程式設計社群網站
線上人數
1227
 
會員總數:243277
討論主題:188067
歡迎您免費加入會員
討論區列表 >> MS SQL >> 類似累加的用法
[]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
類似累加的用法
價值 : 20 QP  點閱數:239 回應數:4

樓主

K書
門外漢
0 13
194 23
發送站內信

大家好

附上table畫面跟sql語法
希望能利用SQL達到
第二筆的期初數量 =第一筆資料的期初數量+異動數量
第三筆的期初數量 =第二筆資料的期初數量+異動數量
...
...
以此類推

謝謝~


現有TABLE

產品 異動日期 期初數量 異動數量
A 20180802 100 10
A 20180807 0 20
A 20180810 0 0
A 20180821 0 50
A 20180831 0 10

達成後的TABLE

產品 異動日期 期初數量 異動數量
A 20180802 100 10
A 20180807 110 20
A 20180810 130 0
A 20180821 130 50
A 20180831 180 10






搜尋相關Tags的文章: [ 累加 ] ,
本篇文章發表於2018-10-04 14:23
別忘捐VP感謝幫助你的人 新手會員瞧一瞧
1樓
最有價值解答

真的有點難
檢舉此回應
alter procedure proc_add
as
create table #xx
(產品 nvarchar(50) null,
異動日期 datetime,
期初數量 int null,
異動數量 int null)
insert #xx
select 'A','20180802','100','10'

insert #xx
select 'A','20180807','0','20'

insert #xx
select 'A','20180810','0','0'

insert #xx
select 'A','20180821','0','50'

insert #xx
select 'A','20180831','0','10'

select id=identity(int,1,1),* into #xxx from #xx

declare @id int

DECLARE db_cursor CURSOR FOR
select id from #xxx order by id
OPEN db_cursor
FETCH NEXT FROM db_cursor INTO @id

WHILE @@FETCH_STATUS = 0
BEGIN

if @id<>1
begin
update #xxx set 期初數量=(select 期初數量+異動數量 from #xxx where id=@id-1)
where id=@id
end

FETCH NEXT FROM db_cursor INTO @id
END
CLOSE db_cursor
DEALLOCATE db_cursor

select * from #xxx
本篇文章回覆於2018-10-07 01:00
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
回應

pilipala
檢舉此回應
請參考該篇 MSDN 文章範例 B
https://docs.microsoft.com/zh-tw/sql/t-sql/functions/sum-transact-sql?view=sql-server-2017
本篇文章回覆於2018-10-07 22:27
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
作者回應

K書
檢舉此回應
TO 真的有點難
結果發現我的資料不只A品號,若有多種品號該如何分別去計算,
我的資料每個品號的第一筆異動日期都有期初數量了
本篇文章回覆於2018-10-08 12:06
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
4樓
把procedure 多加一個品號的變數 不過原來的PROCEDURE 也要略加修改

alter procedure proc_addxx
as

DECLARE @品號 NVARCHAR(50)

DECLARE db_cursor CURSOR FOR
select DISTINCT 品號 from SOURCE
OPEN db_cursor
FETCH NEXT FROM db_cursor INTO @品號
WHILE @@FETCH_STATUS = 0
BEGIN

EXEC proc_add @品號

FETCH NEXT FROM db_cursor INTO @品號
END
CLOSE db_cursor
DEALLOCATE db_cursor

本篇文章回覆於2018-10-08 19:06
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   
1

回覆
如要回應,請先登入.