create view dbo.v_test
as
select id,检查时间,检查人,
        case 检查结果 when 0 then '不合格'
           when 1 then '合格'
           else '不明'
        end 结果
from tbgo

解决方案 »

  1.   

    select a.id,a.检查时间,a.检查人,case when sum(检查结果)=count(*) then 1 else 0 end from A表
    a inner join B表 b on a.id=b.id
      

  2.   

    select A.* , M.检查情况 from A,
    (
      select distinct ID , 检查情况 = '合格' from B where ID not in (select distinct ID , 检查情况 = '不合格' from B where 检查结果 = 0)
      union all
      select distinct ID , 检查情况 = '不合格' from B where 检查结果 = 0
    ) M
    where A.id = M.id
      

  3.   

    create table A(ID int, 检查时间 datetime,      检查人 varchar(10))
    insert into A values(1,   '2008-3-24',    '小王')
    insert into A values(2,   '2008-3-24',    '小王')
    insert into A values(3,   '2008-3-24',    '小王')
    insert into A values(4,   '2008-3-24',    '小王')
    insert into A values(5,   '2008-3-24',    '小王')
    insert into A values(6,   '2008-3-24',    '小王')
    create table B(ID int,  检查项目 int,  检查结果 int)
    insert into B values(1,       10,       0 )
    insert into B values(1,       11,       1 )
    insert into B values(1,       12,       0 )
    insert into B values(2,       10,       1 )
    insert into B values(2,       11,       1 )
    insert into B values(2,       12,       1 )
    go--查询及结果
    select A.* , isnull(M.检查情况,'未参检') 检查情况 from A left join
    (
      select distinct ID , 检查情况 = '合格' from B where ID not in (select distinct ID from B where 检查结果 = 0)
      union all
      select distinct ID , 检查情况 = '不合格' from B where 检查结果 = 0
    ) M
    on A.id = M.id
    /*
    ID          检查时间                                                   检查人        检查情况   
    ----------- ------------------------------------------------------ ---------- ------ 
    1           2008-03-24 00:00:00.000                                小王         不合格
    2           2008-03-24 00:00:00.000                                小王         合格
    3           2008-03-24 00:00:00.000                                小王         未参检
    4           2008-03-24 00:00:00.000                                小王         未参检
    5           2008-03-24 00:00:00.000                                小王         未参检
    6           2008-03-24 00:00:00.000                                小王         未参检(所影响的行数为 6 行)
    */
    go--创建视图
    create view my_view
    as
    select A.* , isnull(M.检查情况,'未参检') 检查情况 from A left join
    (
      select distinct ID , 检查情况 = '合格' from B where ID not in (select distinct ID from B where 检查结果 = 0)
      union all
      select distinct ID , 检查情况 = '不合格' from B where 检查结果 = 0
    ) M
    on A.id = M.id
    go
    --查询视图急及结果
    select * from my_view
    /*
    ID          检查时间                                                   检查人        检查情况   
    ----------- ------------------------------------------------------ ---------- ------ 
    1           2008-03-24 00:00:00.000                                小王         不合格
    2           2008-03-24 00:00:00.000                                小王         合格
    3           2008-03-24 00:00:00.000                                小王         未参检
    4           2008-03-24 00:00:00.000                                小王         未参检
    5           2008-03-24 00:00:00.000                                小王         未参检
    6           2008-03-24 00:00:00.000                                小王         未参检(所影响的行数为 6 行)
    */drop table A,B
    drop view my_view
      

  4.   

    create table A(ID int, 检查时间 datetime,      检查人 varchar(10))
    insert into A values(1,   '2008-3-24',    '小王')
    insert into A values(2,   '2008-3-24',    '小王')
    insert into A values(3,   '2008-3-24',    '小王')
    insert into A values(4,   '2008-3-24',    '小王')
    insert into A values(5,   '2008-3-24',    '小王')
    insert into A values(6,   '2008-3-24',    '小王')
    create table B(ID int,  检查项目 int,  检查结果 int)
    insert into B values(1,       10,       0 )
    insert into B values(1,       11,       1 )
    insert into B values(1,       12,       0 )
    insert into B values(2,       10,       1 )
    insert into B values(2,       11,       1 )
    insert into B values(2,       12,       1 )
    go
    select a.id,a.检查时间,a.检查人,
    case when sum(检查结果)=count(*) then 1 else 0 end from A
    a inner join B b on a.id=b.id
    group by   a.id,a.检查时间,a.检查人