计算库龄

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,不知道大家清楚没,谢谢!
...全文
262 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
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

22,210

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧