您的位置:首页 > 数据库 > MySQL

mysql多表统计数查询行转列

2018-01-15 18:43 351 查看
今天在统计查询时遇到以下问题,自己做个记录:

部门A在A地区发布一条数据库类型资源,在B地区发布一条文件类型资源。存在db表:

db
部门地区名称。。。
部门A湖南数据库资源1。。。
部门A河北数据库资源2。。。
部门B也在A地区发布一条文件类型资源。存在file表如下:

file
部门地区名称。。。
部门B河北文件资源1。。。
期望结果:(按照部门和地区进行分组。分别统计某部门在某地区下发布的某种类型资源的数量)

部门地区数据库文件
部门A湖南10
部门A河北10
部门B河北01
sql语句如下:
SELECT
T.部门,
T.地区,
SUM(T.fileCount) AS fileCount,
SUM(T.dbCount) AS dbCount
FROM
(SELECT
d.部门,
d.地区,
0 AS fileCount,
1 AS dbCount
FROM
db d
UNION ALL
SELECT
f.部门,
f.地区,
1 AS fileCount,
0 AS dbCount
FROM
file f
) T
GROUP BY
T.部门, T.地区先分别查出对应表中的发布资源条数。根据返回的结构设定对应的列名,匹配的类型设定为1,没有的设定为0。再通过union all 连接两个表的结果。最后设定分组条件进行分组。分别对统计的类型数据进行求和得到最终结果
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  行转列 统计查询