在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
答案 0 :(得分:0)
认为您还希望按ArtikelCode
进行分区。我想你打算按datum
订购。 。 。并且rows
子句是不需要的,因为它默认存在:
SUM(Aantal) OVER (PARTITION BY a.ArtikelCode, r.ProdItem
ORDER BY o.datum
) as Telling