如何写SQL实现:在数据表中增加一列,该列的值是出库数的累加

如下图,在数据表中增加一列【累计出库数】,累计出库数的值等于出库数的累加数(按制单日期升序累加),如何写SQL实现

sql server: 使用自连接

SELECT T.出库单号,T.制单日期, T.出库数量, SUM(T1.出库数量) AS 累加出库数
FROM   表 T
LEFT   JOIN 表 T1
ON     T1.制单时间 <= T.制单时间
GROUP  BY T.出库单号,T.制单时间, T.出库数量

oracle: 分析函数

SELECT T.*, SUM(出库数量) OVER(ORDER BY 制单时间) AS 累计出库数 FROM 表  T

追问

表格里的制单时间,有些行是相同的,
【ON T1.制单时间 <= T.制单时间】可能会出问题哦

追答

那就加个序号:

with tmp as 
(select a.*,row_number()over(order by 制单日期) as rn from 表 a)
SELECT T.出库单号,T.制单日期, T.出库数量, SUM(T1.出库数量) AS 累加出库数
FROM   tmp T
LEFT   JOIN tmp T1
ON     T1.rn <= T.rn
GROUP  BY T.出库单号,T.制单时间, T.出库数量

温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答