当前位置: 代码迷 >> Sql Server >> 一个实例有关问题,入库分配SQL有关问题
  详细解决方案

一个实例有关问题,入库分配SQL有关问题

热度:10   发布时间:2016-04-24 09:32:04.0
一个实例问题,入库分配SQL问题
计划日期,计划数量,入库数量
2-1,4000,0
2-3,4500,0
2-5,4500,0

现在入库情况
2-1 3000
2-3 6000

我想要的结果
2-1,4000,3000
2-3,4500,4500
2-5,4500,500



------解决思路----------------------
你太多东西没说清楚了,我就大概写个吧,你可以根据自己的需要修改,或者提出不符合的地方
;WITH CTE AS(
SELECT ISNULL(T1.计划日期,T2.日期)日期,T1.计划数量,T2.入库数量
FROM TB1 T1
FULL JOIN TB2 T2 ON T1.计划日期=T2.日期
)
SELECT T1.日期,T1.计划数量
,CASE WHEN T1.入库数量>T1.计划数量 THEN T1.计划数量
ELSE ISNULL(T1.入库数量,0)
+ CASE WHEN SUM(ISNULL(T2.入库数量,0)-ISNULL(T2.计划数量,0))>0
THEN SUM(ISNULL(T2.入库数量,0)-ISNULL(T2.计划数量,0))
ELSE 0
END
END 入库数量
FROM CTE T1
LEFT JOIN CTE T2 ON T1.日期>T2.日期
WHERE T1.计划数量 IS NOT NULL
GROUP BY T1.日期,T1.计划数量,T1.入库数量
  相关解决方案