有一张表A
StoveNo(炉次)PotNo(罐号)SamplingCause(结果)
   123       67         取样成功
   123       68         取样成功
   123       45        取样成功
   124      98         取样成功
   124      67         取样成功
   124      56         取样不成功
   223       34         取样成功
   223       87        取样不成功
   223       90        取样不成功
   236      34         取样成功
   236       87        取样成功
   236       90        取样不成功
   等等还有其它数据
 每个相同的炉次都有三个不同的罐号,三个罐取样的结果肯定有一个是成功取样的
现在我要查询的结果如下:
成功取样一个罐有多少炉:
成功取样二个罐有多少炉:
成功取样三个罐有多少炉:
如看上面提供的数据该结果如下:一个罐炉数为:1 ;两个罐的炉数为:2;三个罐的炉数为:1
请问要实现该结果SQL语句什么写:
 

解决方案 »

  1.   

    --原始数据:@A
    declare @A table(StoveNo int,PotNo int,SamplingCause varchar(10))
    insert @A
    select 123,67,'取样成功' union all
    select 123,68,'取样成功' union all
    select 123,45,'取样成功' union all
    select 124,98,'取样成功' union all
    select 124,67,'取样成功' union all
    select 124,56,'取样不成功' union all
    select 223,34,'取样成功' union all
    select 223,87,'取样不成功' union all
    select 223,90,'取样不成功' union all
    select 236,34,'取样成功' union all
    select 236,87,'取样成功' union all
    select 236,90,'取样不成功'select 成功=ltrim(cn)+'个罐',炉数=count(*) from
    (select StoveNo,cn=count(*) from @A where SamplingCause='取样成功' group by StoveNo) a
    group by cn/*
    成功               炉数          
    ---------------- ----------- 
    1个罐              1
    2个罐              2
    3个罐              1
    */
      

  2.   

    复制代码,一起执行,测试。定义的是变量表,单独执行select ...部分当然报错。--或直接拿真实数据表测试
    select 成功=ltrim(cn)+'个罐',炉数=count(*) from
    (select StoveNo,cn=count(*) from 你的真实表名 where SamplingCause='取样成功' group by StoveNo) a
    group by cn
      

  3.   

    select 123,67,'取样成功' union all
    select 123,68,'取样成功' union all
    select 123,45,'取样成功' union all
    select 124,98,'取样成功' union all
    select 124,67,'取样成功' union all
    select 124,56,'取样不成功' union all
    select 223,34,'取样成功' union all
    select 223,87,'取样不成功' union all
    select 223,90,'取样不成功' union all
    select 236,34,'取样成功' union all
    select 236,87,'取样成功' union all
    select 236,90,'取样不成功'这些代码有点问题:A表里面数据不单纯就这几个,可能还有很多很多啊。。
      

  4.   

    用这样的语句:
    select 炉次,coutn(*) from A where 结果 like' 取样成功'
    group by 炉次