SQL脚本:更新主表的完成标记FlagFinish=Y
逻辑
主从表数据结构:tb_Plan是主表,tb_PlanDtls是明细表,主外键字段是MRPNO, 一对多关系。
当明细表的FlagFinish字段(完成标记)全部=Y,主表的FlagFinish标记=Y, 只要明细表有一条没有完成,主表就是没完成。
如果明细表没有记录,主表不能是完成。
SQL 全选
-- 规则:
-- 1. 明细表全部 FlagFinish = 'Y' → 主表 Y
-- 2. 明细表有任何一条 = 'N' → 主表 N
-- 3. 明细表**完全没有记录** → 主表 N(重点!)
UPDATE p SET FlagFinish =
CASE
WHEN EXISTS (
SELECT 1
FROM tb_PlanDtls d
WHERE d.MRPNO = p.MRPNO
)
AND NOT EXISTS (
SELECT 1
FROM tb_PlanDtls d
WHERE d.MRPNO = p.MRPNO
AND ISNULL(d.FlagFinish,'N') <> 'Y'
)
THEN 'Y'
ELSE 'N'
END
FROM tb_Plan p;版权声明:本文为开发框架文库发布内容,转载请附上原文出处连接
NewDoc C/S框架网





