计算库龄

caoyang0299 2015-08-25 02:37:39
月份,入库,出库,库龄
2,0,0
3,30,30
4,10,5
5,20,5
6,40,10
7,10,50
8,20,5
……
如上数据,算库龄是多少个月
算法是,结存数量往前推,上面结存是25,
8月结存15,7月结存-40,……
往前推到累加的和=25后,算到是4月,
显示结果就是从4月开始4,3,2,1
求sql,不知道大家清楚没,谢谢!
...全文
116 点赞 收藏 1
写回复
1 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
Tiger_Zhao 2015-08-25
DECLARE @结存 int
SET @结存=25

;WITH /* 测试数据
table1(月份,入库,出库)AS(
SELECT 2,0,0 UNION ALL
SELECT 3,30,30 UNION ALL
SELECT 4,10,5 UNION ALL
SELECT 5,20,5 UNION ALL
SELECT 6,40,10 UNION ALL
SELECT 7,10,50 UNION ALL
SELECT 8,20,5
),*/
a AS (
SELECT *,
ROW_NUMBER() OVER(ORDER BY 月份 DESC) -1 库龄
FROM table1
)
,b AS (
SELECT a.*,
@结存-(a.入库-a.出库) AS 结存
FROM a
WHERE 库龄 = 0
UNION ALL
SELECT a.*,
b.结存-(a.入库-a.出库) AS 结存
FROM a
JOIN b
ON a.库龄 = b.库龄+1
WHERE b.结存 <> 0
)
SELECT *
FROM b
ORDER BY 库龄 DESC

       月份        入库        出库                 库龄        结存
----------- ----------- ----------- -------------------- -----------
4 10 5 4 0
5 20 5 3 5
6 40 10 2 20
7 10 50 1 50
8 20 5 0 10
回复
相关推荐
发帖
疑难问题
创建于2007-09-28

2.1w+

社区成员

MS-SQL Server 疑难问题
申请成为版主
帖子事件
创建了帖子
2015-08-25 02:37
社区公告
暂无公告