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 |