日期:2014-05-18  浏览次数:20513 次

很有意思~一个SQL查询问题~~急~~本人在线等
有一张表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语句什么写:
 

------解决方案--------------------
SQL code
--原始数据:@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
*/