有点难度的SQL问题
有两个表A、B,结构如下
表A
[主表ID] ,[是否完成]
1 已完成
2 部分
3 未完成
表B
[子表ID],[主表ID],[状态]
1 , 1 , 未完成
2 , 1 , 已完成
3 , 1 , 已完成
4 , 2 , 未完成
表A和表B通过[主表ID]关联,我想更改表A的[是否完成]字段,当表B的所有记录都完成,则表A为“完成”,当表B的部分完成,则表A为“部分”,当表B都未完成,则表A“未完成”。
------解决方案--------------------Update a set a.[是否完成]=IsNULL((Case when
not exists(Select * from 表B Where
状态= '已完成 ' and id=a.id) then '未完成 '
when not exists(Select * from 表B Where
状态= '未完成 ' and id=a.id) then '已完成 '
else '部分 ' end),[是否完成])
from 表A as a