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

统计count和group by的问题
在下面表中我希望每个系atype=录像带的个数,但是因为每条记录中会因为其他类型不同而影响统计数目。
      具体看下表:

atype       ksxq                 xb                 kcmc           kcid             zylb         zymc     aname   btype

录像带   2007秋   法律与行政系   WTO概览   260000349   开放专科   物流管理     adf   主教      

录像带   2007秋   法律与行政系 WTO概览   260000349 开放专科 物流管理 adfa   辅教    

录像带   2007秋   法律与行政系 WTO概览   260000351 开放专科 商务管理   adf   主教      
 
录像带   2007秋   法律与行政系 WTO概览   260000351 开放专科 商务管理 adfaf   辅教

        我希望结果是统计法律行政系出录像带的数目为2,但由于btype和name不同结果总是4,另外说一下这个里面主键是多个项:ksxq,xb,kcid,zylb
    我的第一次语句是:SELECT   xb,   COUNT(name)   FROM   Allresource
                                        WHERE   (atype   =   '录像带 ')
                                          GROUP   BY   xb
        结果是:法律与行政系     4
    第二此语句是:select   xb,count(name)   FROM   Allresource
                                        WHERE   (atype   =   '录像带 ')
                                          GROUP   BY   xb,ksxq,xb,kcid,zylb
      结果仍然是错的,请各位指点。


------解决方案--------------------
select xb, kcid, count(1) from Allresource group by xb, kcid
------解决方案--------------------
select distinct xb,atype
from
(
SELECT xb, COUNT(atype)as atype ,btype
FROM Allresource
WHERE (atype = '录像带 ')
GROUP BY xb, btype
)a


------解决方案--------------------
那你要的结果是?????
--------------------------------
Select * From @T

Select xb,atype From (
Select xb,btype,Count(atype) As atype
From Allresource
Group By xb,btype
) T
Group By xb,atype