台灣最大程式設計社群網站
線上人數
716
 
會員總數:241901
討論主題:187156
歡迎您免費加入會員
討論區列表 >> MS SQL >> 資料庫 同一欄位上下相減
[ 變換順序 ]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
資料庫 同一欄位上下相減
價值 : 50 QP  點閱數:167 回應數:3

樓主

Charles Chen
門外漢
0 1
26 1
發送站內信

遠端連線>資料庫 Navicat Premium
資料表名:audusd
內有
time nb_a nb_b nb_aa
time 1 0.78261 0.7828
time 2 0.78269 0.7828
time 3 0.78273 0.7828
. .
. . 共有2~4萬筆不等資料

小弟需要 nb_a1-nb_a2=差nb_aa 資料回存去nb_aa
請問如何寫會比較好?

搜尋相關Tags的文章: [ sql ] , [ php ] , [ 同一欄位上下相減 ] ,
本篇文章發表於2018-01-09 16:16
別忘捐VP感謝幫助你的人 新手會員瞧一瞧
1樓
alter procedure porc_test
as

create table #temp(
time int,
nb_a numeric(10,5) null,
nb_b numeric(10,4) null,
nb_aa numeric(10,5) null)

insert #temp
select 1,0.78261,0.7828,null
insert #temp
select 2,0.78269,0.7828,null
insert #temp
select 3,0.78273,0.7828,null

declare @time int
declare @nb_a numeric(10,5)

DECLARE crx CURSOR FOR
select time,nb_a from #temp order by time
OPEN crx
FETCH NEXT FROM crx into @time,@nb_a
WHILE(@@FETCH_STATUS=0)
BEGIN

update #temp set nb_aa=(select nb_a from #temp where time=@time+1)-nb_a where time=@time

FETCH NEXT from crx into @time,@nb_a
END
CLOSE crx
DEALLOCATE crx

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

pilipala
檢舉此回應
Window Function + CTE 更新
本篇文章回覆於2018-01-10 14:28
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
回應

一頁書
檢舉此回應
我會建2個TEMP TABLE ORDER BY 某個KEY 值,自動流水產生SEQ,TABLE A 有SEQ,TABLE B 把 A的SEQ-1,再用JION SEQ 這樣相減,會比CURSOR快多了
本篇文章回覆於2018-02-13 16:37
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
[ 變換順序 ]   
1

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