27,579
社区成员
发帖
与我相关
我的任务
分享
;WITH CTE1 AS(
SELECT ROW_NUMBER()OVER(ORDER BY 计划日期)RN
,*
FROM TB1
)
,CTE2 AS(
SELECT ROW_NUMBER()OVER(ORDER BY 日期)RN
,*
FROM TB2
)
,CTE AS(
SELECT T1.计划日期
,T1.RN
,T1.计划数量,T2.入库数量
FROM CTE1 T1
FULL JOIN CTE2 T2 ON T1.RN=T2.RN
)
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.RN>T2.RN
GROUP BY T1.计划日期,T1.计划数量,T1.入库数量
;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.入库数量