日期:2014-05-18  浏览次数:20706 次

有点难度的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