如果你是要插入的话,那就需要知道:订货行号;此次发货:发货数量 然后 select [订货行号],[订货数量],@发货时间,@发货数量,min(nqty) -@发货数量 from 表 where id=@订货行号
可以試一下這句sql,應該可以解決你的問題select 订货行号,订货数量,发货时间,发货数量,订货数量-发货数量-ISNULL((select SUM(发货数量) from tablename where 订货行号=a.订货行号 and 发货时间<a.发货时间),0) as 未发货数量 from tablename as a
--三楼应该可以 select 订货行号,订货数量, 发货时间,sum(发货数量) as 发货数量, 未发货数量=(select 订货数量-SUM(发货数量)from TB where 订货行号=a.订货行号 and 发货时间<=a.发货时间) from TB a group by 订货行号,订货数量, 发货时间 order by 订货行号,发货时间
取最新的[未发货数量]你把nqty改成[未发货数量]min(nqty)是什么用法?
SQL2012以上 之间累加。 select 订货数量-sum(发货数量)over(partition by 订货行号 order by 发货时间) from tablename不是2012就改用递归CTE 或者基于不等连接的自连接
CREATE TABLE #T( 订货行号 int, 订货数量 int, 发货时间 datetime, 发货数量 int, 未发货数量 int ) INSERT INTO #T(订货行号,订货数量,发货时间,发货数量) SELECT 1,20,'2014/9/1',5 UNION ALL SELECT 1,20,'2014/9/2',5 UNION ALL SELECT 1,20,'2014/9/3',5 UNION ALL SELECT 2,30,'2014/9/1',5 UNION ALL SELECT 2,30,'2014/9/2',5 UNION ALL SELECT 2,30,'2014/9/3',5 UPDATE #T SET 未发货数量 = 订货数量 - (SELECT SUM(发货数量) FROM #T t0 WHERE t0.订货行号 = #T.订货行号 AND t0.发货时间 <= #T.发货时间)SELECT * FROM #T 订货行号 订货数量 发货时间 发货数量 未发货数量 ----------- ----------- ----------------------- ----------- ----------- 1 20 2014-09-01 00:00:00.000 5 15 1 20 2014-09-02 00:00:00.000 5 10 1 20 2014-09-03 00:00:00.000 5 5 2 30 2014-09-01 00:00:00.000 5 25 2 30 2014-09-02 00:00:00.000 5 20 2 30 2014-09-03 00:00:00.000 5 15
select *, 订货数量- (select sum(发货数量) from 表格如下 where 订货行号=t.订货行号 and 发货时间<=t.发货时间) from 表格如下 t
然后
select [订货行号],[订货数量],@发货时间,@发货数量,min(nqty) -@发货数量 from 表 where id=@订货行号
select 订货行号,订货数量, 发货时间,sum(发货数量) as 发货数量,
未发货数量=(select 订货数量-SUM(发货数量)from TB where 订货行号=a.订货行号 and 发货时间<=a.发货时间)
from TB a
group by 订货行号,订货数量, 发货时间
order by 订货行号,发货时间
select 订货数量-sum(发货数量)over(partition by 订货行号 order by 发货时间) from tablename不是2012就改用递归CTE 或者基于不等连接的自连接
订货行号 int,
订货数量 int,
发货时间 datetime,
发货数量 int,
未发货数量 int
)
INSERT INTO #T(订货行号,订货数量,发货时间,发货数量)
SELECT 1,20,'2014/9/1',5 UNION ALL
SELECT 1,20,'2014/9/2',5 UNION ALL
SELECT 1,20,'2014/9/3',5 UNION ALL
SELECT 2,30,'2014/9/1',5 UNION ALL
SELECT 2,30,'2014/9/2',5 UNION ALL
SELECT 2,30,'2014/9/3',5 UPDATE #T
SET 未发货数量 = 订货数量 - (SELECT SUM(发货数量)
FROM #T t0
WHERE t0.订货行号 = #T.订货行号
AND t0.发货时间 <= #T.发货时间)SELECT * FROM #T
订货行号 订货数量 发货时间 发货数量 未发货数量
----------- ----------- ----------------------- ----------- -----------
1 20 2014-09-01 00:00:00.000 5 15
1 20 2014-09-02 00:00:00.000 5 10
1 20 2014-09-03 00:00:00.000 5 5
2 30 2014-09-01 00:00:00.000 5 25
2 30 2014-09-02 00:00:00.000 5 20
2 30 2014-09-03 00:00:00.000 5 15
订货数量- (select sum(发货数量) from 表格如下 where 订货行号=t.订货行号 and 发货时间<=t.发货时间)
from 表格如下 t