表一:
序号,资源名
---------------
table1
xh zym
1  资源1
2  资源2
3  资源3
4  资源4
5  资源5
6  资源6表二:
员工名,资源名
-----------------
table2
ygm   zym 
李明  资源4
李明  资源6问题:
查询表一、表二想得到下边的结果(如果表二中员工李明有表一中得资源就标记为1没有标记为0)
xh zym    标记
1  资源1  0
2  资源2  0
3  资源3  0
4  资源4  1
5  资源5  0
6  资源6  1

解决方案 »

  1.   


    create table table1(xh int identity(1,1),zym nvarchar(32))
    create table table2(ygm nvarchar(12),zym nvarchar(32))insert table1 select N'资源1' union
     select N'资源2' union
    select N'资源3' union
    select N'资源4' union
    select N'资源5' union
    select N'资源6'
    insert table2 
    select N'李明',N'资源4' union
    SELECT N'李明',N'资源6'
    SELECT A.*,CASE WHEN ygm IS NULL THEN 0 ELSE 1 END AS BIAOJI
     FROM table1 A LEFT JOIN table2 B ON A.zym =B.zym 
     
     /*
     xh zym BIAOJI
    1 资源1 0
    2 资源2 0
    3 资源3 0
    4 资源4 1
    5 资源5 0
    6 资源6 1*/
      

  2.   


    --> 测试数据:[表一]
    if object_id('[表一]') is not null drop table [表一]
    create table [表一]([xh] int,[zym] varchar(5))
    insert [表一]
    select 1,'资源1' union all
    select 2,'资源2' union all
    select 3,'资源3' union all
    select 4,'资源4' union all
    select 5,'资源5' union all
    select 6,'资源6'
    --> 测试数据:[表二]
    if object_id('[表二]') is not null drop table [表二]
    create table [表二]([ygm] varchar(4),[zym] varchar(5))
    insert [表二]
    select '李明','资源4' union all
    select '李明','资源6'select *,
      case when exists (select 1 from [表二] b where a.zym=b.zym
           and b.ygm='李明') then 1 else 0 end as bj
    from [表一] a--如果说不是仅仅是李明
    select *,
      case when exists (select 1 from [表二] b where a.zym=b.zym
           ) then 1 else 0 end as bj
    from [表一] a
    /*
    xh zym bj
    1 资源1 0
    2 资源2 0
    3 资源3 0
    4 资源4 1
    5 资源5 0
    6 资源6 1
    */
      

  3.   

    select a.*,标记=1 from table1 a,Table2 b where a.zym=b.zym
    union 
    select a.*,标记=0 from  table1 a where a.zym not in(select c.zym from table1 c,Table2 d where c.zym=d.zym)