簡體   English   中英

在SQL Server 2014中使用OVER創建運行tot

[英]Create running tot with OVER in SQL Server 2014

在SQL Sever 2014中,我想創建一個帶有分區總運行量的列,但無法正常工作。 這就是我所擁有的:

SELECT 
    a.ArtikelCode
    ,a.Omschrijving
    ,o.OrderNr
    ,o.Datum
    ,r.ProdItem
    ,o.Aantal
    ,(SUM(Aantal) OVER(PARTITION BY r.ProdItem ORDER BY r.ProdItem ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)) AS Telling
FROM Artikel a
LEFT JOIN Receprt r ON r.ReqItem = a.ArtikelCode
LEFT JOIN [Order] o ON o.ArtikelCode = r.ProdItem
WHERE LEFT(a.ArtikelCode,1) = 'M'
GROUP BY r.ProdItem, o.ArtikelCode, a.ArtikelCode, o.Datum, o.Aantal, a.Omschrijving, o.OrderNr
ORDER BY a.ArtikelCode, r.ProdItem, o.datum

這給了我以下結果: 在此處輸入圖片說明

如您所見,“ Telling”列對“ Aantal”列進行求和。 對於ArtikelCode“ M01”和ProdItem“ ART01”來說效果很好。 但是在記錄8中,它仍在總結。 我想要的是它在記錄8中再次從2開始,在記錄9中應為3,在記錄10中“ Telling”列中的總和應為10

想想您也想按ArtikelCode進行分區。 我想你打算通過訂購datum為好。 並且不需要rows子句,因為默認情況下該子句位於該子句中:

 SUM(Aantal) OVER (PARTITION BY a.ArtikelCode, r.ProdItem
                   ORDER BY o.datum
                  ) as Telling

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM