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

來源:互聯網
上載者:User

  構建表的上下級關係 

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

代碼

--構建表的上下級關係
--可以對同一個產品的,有層次關係
--使用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)

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.