create table loc(loc varchar(50),xiaoqu varchar(50),addr varchar(50),company varchar(50))
插入数据
区域 |
小区名称 |
房屋地址 |
中介公司 |
宝山 |
庆安三村 |
绥化路52弄 |
A |
宝山 |
月浦十村 |
月浦十村67号 |
B |
宝山 |
盛桥三村 |
盛桥三村94号 |
C |
宝山 |
月浦四村 |
月浦四村42号 |
D |
宝山 |
乐业二村 |
春雷路332弄 |
E |
宝山 |
月浦二村 |
月浦二村19号 |
B |
宝山 |
阳光美林苑 |
月富路218弄 |
C |
宝山 |
月浦六村 |
月浦六村7号 |
F |
宝山 |
春雷路431弄小区 |
春雷路431弄 |
B |
宝山 |
新月明珠园 |
塔源路150弄 |
B |
宝山 |
盛桥三村 |
盛桥三村1号 |
G |
SET @sq1='';
SELECT @sq1:=CONCAT(@sq1,'SUM(IF(xiaoqu=\'',xiaoqu,'\'',',1,0)) AS ',xiaoqu,',') as col4 FROM (select distinct xiaoqu from loc) a
SET @sq2=CONCAT('SELECT ifnull(company,\'total\') AS companyname,count(distinct xiaoqu) as xiaoqucnt,',LEFT(@sq1,LENGTH(@sq1)-1),' sum(xiaoqu) as total FROM loc GROUP BY company WITH ROLLUP');
PREPARE statm FROM @sq2;
EXECUTE statm;
输出结果
companyname | xiaoqucnt | 庆安三村 | 月浦十村 | 盛桥三村 | 月浦四村 | 乐业二村 | 月浦二村 | 阳光美林苑 | 月浦六村 | 春雷路431弄小区 | 新月明珠园 | total |
A | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
B | 4 | 0 | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 1 | 1 | 0 |
C | 2 | 0 | 0 | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 |
D | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
E | 1 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 |
F | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 |
G | 1 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
total | 10 | 1 | 1 | 2 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 |