请教一个SQLSERVER里的子查询的问题 急
"Select   ID,(select   count(*)   from   IPCount   where   AdId   =   ADCount.Id),(select   count(*)   from   IPCount   where   come_state   =   1   and   AdId   =   ADCount.Id)   from   AdCount   Order   By   Id   Desc " 
 这句可有什么地方是错误的?   
 前提是:   
 表IPCount中两条符合AdId   =   AdCount.Id的值,有一条符合come_state   =   1   and   AdId   =   ADCount.Id   
 但现在出现的问题就是,当表IPCount中有come_state=1存在时,就取不到记录,也不报错,我把come_state   =   0时,就正常了!   
 还有一种就是,我把AdId   =   AdCount.Id   直接改成我要取的AdId号,也正常!     
 例如表IPCount中有   
 Adid                                             come_state 
 1                                                         0 
 1                                                         1   
 表ADCount中有 
 Id 
 1   
 用上面的语句,无法取出来   
 写成 "Select   ID,(select   count(*)   from   IPCount   where   AdId   =   1),(select   count(*)   from   IPCount   where   come_state   =   1   and   AdId   =   1)   from   AdCount   Order   By   Id   Desc " 
 就可以!     
 实在不解,求达人帮忙!分不多,仅表谢意!     
------解决方案--------------------Select  
     ID, 
     (select count(*) from IPCount where AdId = ADCount.Id), 
     (select sum(case come_state when 1 then 1 else 0 end) from IPCount where AdId = ADCount.Id)  
 from  
     AdCount  
 Order  
     By Id Desc
------解决方案--------------------  Select 
 	A.ID, 
 	Count(*) As Count1, 
 	SUM(Case come_state When 1 Then 1 Else 0 End) As Count2 
 From 
 	AdCount A 
 Inner Join 
 	IPCount B 
 On A.Id = B.AdId 
 Group By A.Id 
 Order By A.Id Desc
------解决方案--------------------Select ID,(select count(*) from IPCount where AdId = Id),(select count(*) from IPCount where come_state = 1 and AdId = Id) from AdCount Order By Id Desc   
 这样 
------解决方案--------------------什么非要写成这样,直接用两张表关联一次不就行了??? 
 select b.id, count(*),  
 sum( a.come_state 
        when  '0 ' then 1   --只统计come_state=0的用户 
        else 0 
 end 
 ) as ct1 
 From IPCount  a, adCount b 
 where b.id = a.adid 
 group by b.id