表结构如下:loanid   userid   type
L1       ID1        0
L1       ID1        1
L2       ID1        1     
L2       ID1        1
L2       ID1        1
L3       ID1        1
L3       ID1        0
L3       ID1        0
L4       ID2        0
L4       ID2        0
L4       ID2        1
L5       ID3        1
L6       ID2        0
L7       ID4        1查询要的表结果是:
userid type
ID1     1
ID4     1
条件:1 (例如,userID 为D1 的,loanid 的行数是不固定,),2 查询条件的 type =1 

解决方案 »

  1.   

    上面是要统计出,针对userid  按 loanid 分组 统计处如果一组的 type=1 的userID  列。
    不知道我说明白了么!
    针对ID1 这个数据:要统计处L2 这个数据按ID1分组
    L1       ID1        0
    L1       ID1        1

    L2       ID1        1     
    L2       ID1        1
    L2       ID1        1

    L3       ID1        1
    L3       ID1        0
    L3       ID1        0
      

  2.   

    这个是一张表中的数据!这个是测试数据:
    loanid   userid   type
    L1       ID1        0
    L1       ID1        1
    L2       ID1        1     
    L2       ID1        1
    L2       ID1        1
    L3       ID1        1
    L3       ID1        0
    L3       ID1        0
    L4       ID2        0
    L4       ID2        0
    L4       ID2        1
    L5       ID3        1
    L6       ID2        0
    L7       ID4        1
    ============
    这个是针对这个测试数据查询要的结果:
    userid type
    ID1    1
    ID4    1
      

  3.   

    select m.* from tb m where userid = 'id1' and not exists(select 1 from tb n where n.userid = 'id1' and n.type <> 1 and n.loanid = m.loanid)
      

  4.   

    你的条件其实是type,和userid无关吧?select m.* from tb m where not exists(select 1 from tb n where n.type <> 1 and n.loanid = m.loanid)
      

  5.   

    这个不能加条件 userid = 'id1' ,上面的测试数据表中 还有 ID4 的,条件只有一个 type=1  别的没有条件了。
      

  6.   

    好象和你的结果有点点出入.
    create table tb(loanid varchar(10), userid varchar(10), type int)
    insert into tb values('L1' , 'ID1' , 0)
    insert into tb values('L1' , 'ID1' , 1)
    insert into tb values('L2' , 'ID1' , 1) 
    insert into tb values('L2' , 'ID1' , 1)
    insert into tb values('L2' , 'ID1' , 1)
    insert into tb values('L3' , 'ID1' , 1)
    insert into tb values('L3' , 'ID1' , 0)
    insert into tb values('L3' , 'ID1' , 0)
    insert into tb values('L4' , 'ID2' , 0)
    insert into tb values('L4' , 'ID2' , 0)
    insert into tb values('L4' , 'ID2' , 1)
    insert into tb values('L5' , 'ID3' , 1)
    insert into tb values('L6' , 'ID2' , 0)
    insert into tb values('L7' , 'ID4' , 1)
    goselect m.* from tb m where not exists(select 1 from tb n where n.type <> 1 and n.loanid = m.loanid)
    /*
    loanid     userid     type        
    ---------- ---------- ----------- 
    L2         ID1        1
    L2         ID1        1
    L2         ID1        1
    L5         ID3        1
    L7         ID4        1(所影响的行数为 5 行)
    */
     
    select distinct m.userid , m.type from tb m where not exists(select 1 from tb n where n.type <> 1 and n.loanid = m.loanid)
    /*
    userid     type        
    ---------- ----------- 
    ID1        1
    ID3        1
    ID4        1(所影响的行数为 3 行)
    */ drop table tb
      

  7.   

    我说业务吧,那样能直观点,这个是银行的客户分期还款记录表,同一个客户userID ,多笔贷款loanid (贷款期数不同6,8,12,24等),逾期标志type(0逾期,1没逾期),查询同一个客户是否有一笔贷款的还款记录没有逾期。然后把这个客户找出来。