SQL server2008r2 怎么统计一个表内单列对应的省城市数量

SQL server2008r2 怎么统计一个表内单列对应的省城市数量

问题描述:

表1

aa bb 省 城市

11 张 浙江 杭州

22 王 河南 郑州

33 李 河南 洛阳

44 赵 陕西 汉中

22 王 河南 郑州

55 张 浙江 杭州

66 王 上海 上海

44 刘 福建 厦门

select bb,count(aa) as pageCount from 表1 group by bb 


order by

       pageCount DESC

我现在用得只能统计bb下面得张,王,李得数量,后面对应得省城市数量没有,怎么才能统计成下面这样:

表2

bb 省 城市 数量

张 浙江 杭州 2

王 河南 郑州 2

李 河南 洛阳 1

赵 陕西 汉中 1

王 上海 上海 1

刘 福建 厦门 1

group by bb之后按理说结果不应该出现两个王了啊。
要你输出的那样应该是
select bb,省,市,count(aa) as 数量 from 表1 group by bb,省,市
order by 数量 DESC

Group by 省,group by 市

CREATE TABLE #tab
(
aa INT,
bb NVARCHAR(20),
province NVARCHAR(20),
city NVARCHAR(50)
)
INSERT INTO #tab
( aa, bb, province, city )
VALUES ( 11,'张' ,'浙江',' 杭州'),
( 22 ,'王','河南', '郑州'),
( 33 ,'李' ,'河南', '洛阳'),
( 44 ,'赵', '陕西' ,'汉中'),
( 22 ,'王', '河南', '郑州'),
( 55 ,'张', '浙江', '杭州'),
( 66, '王', '上海', '上海'),
(44, '赵', '福建', '厦门')

SELECT a.*,b.city FROM (
SELECT aa,bb,province FROM #tab GROUP BY aa,bb,province) a INNER JOIN
(SELECT aa,bb,city FROM #tab GROUP BY aa,bb,city) b ON a.aa=b.aa GROUP BY a.aa,a.bb

SELECT a.aa,a.bb,a.c cs,b.c bs FROM (
SELECT aa,bb,COUNT(a.province) c FROM (
SELECT aa,bb,province FROM #tab GROUP BY aa,bb,province) a GROUP BY aa,bb
)a
INNER JOIN (
SELECT aa,bb,COUNT(a.city) c FROM (
SELECT aa,bb,city FROM #tab GROUP BY aa,bb,city) a GROUP BY aa,bb
) b ON a.aa=b.aa
直接运行出结果!!!