PS:本人新手,望指导:卡号  姓名  项目
001   小王   A
001   小王   B
001   小王   C
003   小黄   A
004   小名   B
005   小兰   A
005   小兰   B
006   小张   A
006   小张   C
007   小陈   A要求:   查询出只做过项目A的卡号、姓名
卡号   姓名   项目
003    小黄   A
007    小陈   A   

解决方案 »

  1.   


    --> 测试数据:[test]
    if object_id('[test]') is not null drop table [test]
    create table [test]([卡号] varchar(3),[姓名] varchar(4),[项目] varchar(1))
    insert [test]
    select '001','小王','A' union all
    select '001','小王','B' union all
    select '001','小王','C' union all
    select '003','小黄','A' union all
    select '004','小名','B' union all
    select '005','小兰','A' union all
    select '005','小兰','B' union all
    select '006','小张','A' union all
    select '006','小张','C' union all
    select '007','小陈','A'
    select * from test a
    where not exists(select 1 from test b where a.姓名=b.姓名 and b.项目<>'A')
    and a.项目='A'/*
    卡号 姓名 项目
    003 小黄 A
    007 小陈 A
    */
      

  2.   


    --> 测试数据:[test]
    if object_id('[test]') is not null drop table [test]
    create table [test]([卡号] varchar(3),[姓名] varchar(4),[项目] varchar(1))
    insert [test]
    select '001','小王','A' union all
    select '001','小王','B' union all
    select '001','小王','C' union all
    select '003','小黄','A' union all
    select '004','小名','B' union all
    select '005','小兰','A' union all
    select '005','小兰','B' union all
    select '006','小张','A' union all
    select '006','小张','C' union all
    select '007','小陈','A'
    select * from test a
    where not exists(select 1 from test b where a.姓名=b.姓名 and b.项目<>'A')
    and a.项目='A'/*
    卡号 姓名 项目
    003 小黄 A
    007 小陈 A
    */
      

  3.   


    IF EXISTS (SELECT 1 FROM SYSOBJECTS WHERE name = 'tba')
    BEGIN
    DROP TABLE tba
    END
    GO
    CREATE TABLE tba
    (
    卡号 VARCHAR(10),
    姓名 VARCHAR(10),
    项目 VARCHAR(10)
    )
    GO
    INSERT INTO tba
    SELECT '001',       '小王',       'A' UNION
    SELECT '001',       '小王',       'B' UNION
    SELECT '001',       '小王',       'C' UNION
    SELECT '003',       '小黄',       'A' UNION
    SELECT '004',       '小名' ,      'B' UNION
    SELECT '005',       '小兰',       'A' UNION
    SELECT '005',       '小兰',       'B' UNION
    SELECT '006',       '小张' ,      'A' UNION
    SELECT '006',       '小张',       'C' UNION
    SELECT '007',       '小陈' ,      'A'
    SELECT * FROM tba AS B
    WHERE 项目 = 'A' AND NOT EXISTS (SELECT 1 FROM tba AS A WHERE A.卡号 = B.卡号 AND A.项目 <> 'A')卡号 姓名 项目
    003 小黄 A
    007 小陈 A
      

  4.   


    --> 测试数据:[test]
    if object_id('[test]') is not null drop table [test]
    create table [test]([卡号] varchar(3),[姓名] varchar(4),[项目] varchar(1))
    insert [test]
    select '001','小王','A' union all
    select '001','小王','B' union all
    select '001','小王','C' union all
    select '003','小黄','A' union all
    select '004','小名','B' union all
    select '005','小兰','A' union all
    select '005','小兰','B' union all
    select '006','小张','A' union all
    select '006','小张','C' union all
    select '007','小陈','A'
    select * from test a
    where not exists(select 1 from test b where a.姓名=b.姓名 and b.项目<>'A')
    /*
    卡号    姓名    项目
    003    小黄    A
    007    小陈    A
    */--更正一下尼玛,我的一楼怎么又没了?