首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

有点难度的SQL有关问题

2012-01-19 
有点难度的SQL问题有两个表A、B,结构如下表A[主表ID],[是否完成]1已完成2部分3未完成表B[子表ID],[主表ID],

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

热点排行
Bad Request.