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
直接运行出结果!!!