查询结果
  ID    value1  value2
  1       1      1
  1       1      2
  1       1      3
  1       1      4
  1       2      11
  1       2      12
  1       2      13
  1       2      14
  1       3      21
  1       3      22
  1       3      23
  1       3      24
  2       1      1
  2       1      2
  2       1      3
  2       1      4
  2       2      11
  2       2      12
  2       2      13
  2       2      14
  2       3      21
  2       3      22
  2       3      23
  2       3      24
  
怎么统计筛选 value2 中包含 1 and 包含12或13的ID数量  并按 ID中 分别包含  21,22,23,24 的方式列出结果
如:
 数量        value2
  ID数量        21
  ID数量        22
  ID数量        23
  ID数量        24

解决方案 »

  1.   

    没看懂! value2 包含1,12,13 并且ID 包含21,22,23,24?
      

  2.   


    value2 中 包含 1 且 包含 12 或者 13   
    然后再这个条件上 分别统计 value =21 的ID数量 value=22 的ID数量
                              value =23 的ID数量 value=24 的ID数量
    这下可以明白了吗?
         
      

  3.   


      declare @t table (ID int,value1 int,value2 int)
      insert @t select   1 ,1, 1 union all
     select  1 ,1, 2 union all
     select  1 ,1, 3 union all
     select  1 ,1, 4 union all
     select  1 ,2, 11 union all
     select  1 ,2, 12 union all
     select  1 ,2 ,13 union all
     select  1 ,2, 14 union all
     select  1 ,3, 21 union all
     select  1 ,3, 22 union all
     select  1 ,3, 23 union all
     select  1 ,3, 24 union all
     select  2 ,1, 1 union all
     select  2 ,1, 2 union all
     select  2 ,1, 3 union all
     select  2 ,1, 4 union all
     select  2 ,2, 11 union all
     select  2 ,2, 12 union all
     select  2 ,2, 13 union all
     select  2 ,2, 14 union all
     select  2 ,3, 21 union all
     select  2 ,3 ,22 union all
     select  2 ,3 ,23 union all
     select  2 ,3, 24
      
      
      select count(ID) as id,value2 
      from @t a
      where value2 in(21,22,23,34)
      and exists(select 1 from @t where a.id=id and value2=1)
     and exists(select 1 from @t where a.id=id and value2 in(12,13))
     group by value2
     
     (24 行受影响)
    id          value2
    ----------- -----------
    2           21
    2           22
    2           23(3 行受影响)
      

  4.   

    不要说要用到什么。明白了赶紧上SQL 啊
    好了给分结贴 呵呵
      

  5.   

    value2 中 包含 1 且 包含 12 或者 13  
    然后再这个条件上 分别统计 value =21 的ID数量 value=22 的ID数量
      value =23 的ID数量 value=24 的ID数量
    这下可以明白了吗?
    ----------
    红色的value是哪个?
      

  6.   

    --> 测试数据:[TB]
    if object_id('[TB]') is not null drop table [TB]
    create table [TB]([ID] int,[value1] int,[value2] int)
    insert [TB]
    select 1,1,1 union all
    select 1,1,2 union all
    select 1,1,3 union all
    select 1,1,4 union all
    select 1,2,11 union all
    select 1,2,12 union all
    select 1,2,13 union all
    select 1,2,14 union all
    select 1,3,21 union all
    select 1,3,22 union all
    select 1,3,23 union all
    select 1,3,24 union all
    select 2,1,1 union all
    select 2,1,2 union all
    select 2,1,3 union all
    select 2,1,4 union all
    select 2,2,11 union all
    select 2,2,12 union all
    select 2,2,13 union all
    select 2,2,14 union all
    select 2,3,21 union all
    select 2,3,22 union all
    select 2,3,23 union all
    select 2,3,24select * from [TB]
    WITH TT
    AS(
    SELECT value2,[Count]=COUNT(id)
    FROM dbo.tb
    WHERE  value2 LIKE '%1%' OR value2 LIKE '%12%' OR value2 LIKE '%13%'
    GROUP BY value2)SELECT * FROM TT WHERE value2 IN ('21','22','23','24')/*
    value2 Count
    21 2*/
    ??? 还是没明白,这样???
      

  7.   


    select count(ID) as id,value2 
    from @t a
    where value2 in(21,22,23,24)
    and exists(select 1 from @t where a.id=id and value2=1)
     and exists(select 1 from @t where a.id=id and value2 in(12,13))
    group by value2