構建表的上下級關係
有一個需求,表中資料沒有關係,如同一個類型的,有多個出庫時間。
代碼
--構建表的上下級關係
--可以對同一個產品的,有層次關係
--使用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 by a.productsysno order by b.intime ASC) id ,
productsysno,intime from dbo.PO_It a inner join PO b on a.POSysNo=b.SysNo
and b.status=4 ) t
效果
代碼
--遞迴累加同一產品的入庫數量
with product_cte1(sysno,productsysno,id,lastqty,quantity,Level)
as
(
SELECT [poitemsysno], productsysno,id,quantity,quantity,1 Level from Item_Stock where parentid=0
UNION ALL
SELECT e.[poitemsysno],e.productsysno,e.ID ID,d.quantity,e.quantity+d.quantity,Level+1
FROM dbo.Item_Stock AS e,product_cte1 AS d
where e.parentid = d.id and e.productsysno=d.productsysno
)
--查看資料
select * from
product_cte1 OPTION (MAXRECURSION 0)