SQL構建表層次關係,遞迴累加資料

2022-04-01 03:17:25 字數 1475 閱讀 3410

構建表的上下級關係 

有乙個需求,表中資料沒有關係,如同乙個型別的,有多個出庫時間。

**--

構建表的上下級關係

--可以對同乙個產品的,有層次關係

--使用row_number(),來構建,最上上一級為0

insert

into

stock([

no]--編號,[

quantity],

[id],

[productsysno],

[intime],

[parentid

])    

select

no, id,productsysno,id-1

parentid 

from

(select

a.no, a.quantity,row_number() 

over

(partition 

bya.productsysno 

order

byb.intime 

asc) id ,

productsysno,intime 

from

dbo.po_it a 

inner

join

po b 

ona.posysno

=b.sysno

andb.status=4

) t效果如圖:

遞迴累加同一產品的入庫數量

with

product_cte1(sysno,productsysno,id,lastqty,quantity,

level)as

(select

[poitemsysno

], productsysno,id,quantity,quantity,

1level

from

item_stock 

where

parentid=0

union

allselecte.[

poitemsysno

],e.productsysno,e.id id,d.quantity,e.quantity

+d.quantity,

level+1

from

dbo.item_stock 

ase,product_cte1 asd

where

e.parentid 

=d.id 

ande.productsysno

=d.productsysno)--

檢視資料

select

*from

product_cte1 

option

(maxrecursion 0)

SQL資料表層面操作(DDL)

ddl data definition language 資料定義語言 用於對資料庫和資料表的操作,因為操作物件有兩個 資料庫和資料表 所以我們要在每個命令之後 create drop alter show後面加上database或者table 表明自己操作的物件。這篇文章主要講述對資料表 tabl...

使用SSH如何構建架構層次

在搭建系統的架構時我們採用了ssh ajax 等方式構建的。我們一直說要層次分明,思路清晰,可現在都比較糟糕。比如 jsp頁面用來顯示資料的,css用來美化頁面,js用來控制頁面的。現在很多頁面中什麼都有了,臭味很多。在後台我們也分了action,service,dao層,原本action用來控制排...

使用SSH如何構建架構層次

在搭建系統的架構時我們採用了ssh ajax 等方式構建的。我們一直說要層次分明,思路清晰,可現在都比較糟糕。比如 jsp頁面用來顯示資料的,css用來美化頁面,js用來控制頁面的。現在很多頁面中什麼都有了,臭味很多。在後台我們也分了action,service,dao層,原本action用來控制排...