mysql中查询数据合并(Mysql合并结果接横向拼接字段的实现步骤)
类别:数据库 浏览量:353
时间:2022-01-17 01:50:37 mysql中查询数据合并
Mysql合并结果接横向拼接字段的实现步骤前言
近日在做一个报表功能里面有一个这样的需求是统计各部门在某一月入职和离职的人数
我的步骤
先查出入职的人数
|
select dept , count (1) rcnumber from 员工表 where ( 入职时间 != '' or 入职时间 is not null ) and date_format(入职时间, '%y-%m' )= '2019-09' group by 部门id order by 部门名称 |
查询记录
在查询出离职的人数sql:
|
select dept , count (1) rcnumber from 员工表 where ( 离职时间 != '' or 离职时间 is not null ) and date_format(入职时间, '%y-%m' )= '2019-09' group by 部门id order by 部门名称 |
结果集
我想要的数据是这样的
我有了以下的尝试
1.我将两个查询结果看成两个表,使用了left join 不瞒您说数据格式是我想要的 但是想了想要是右表的记录比较多使用这个不就会少数据吗(right 同理)
2.我使用 union all 这个不是想要的数据 直接将两个结果相加竖向拼接
3.我使用了如同这种 select * from a,b 这个结果是笛卡尔积 两个表相乘的结果
以上方法的sql 就不贴出 意思应该明确了
我不信我就一直问百度 ,百度终于有了回答 我就尝试了一番
1.将入职sql处理如下
|
select a.dept,a.rcnumber,0 as lcnumber from ( select dept , count (1) rcnumber from 员工表 where ( 入职时间 != '' or 入职时间 is not null ) and date_format(入职时间, '%y-%m' )= '2019-09' group by 部门id order by 部门名称) a |
离职sql处理如下:
|
select a.dept,a.lcnumber,0 as rcnumber from ( select dept , count (1) rcnumber from 员工表 where ( 离职时间 != '' or 离职时间 is not null ) and date_format(入职时间, '%y-%m' )= '2019-09' group by 部门id order by 部门名称) a |
在外面包一层也可不包直接在原sql上加 我是为不破坏基本语句 这样当然不够
2.将两个语句进行竖向拼接合并联合sum 拼接
|
select dept , sum (cm_1) as rcnumber, sum (cm_0) as lcnumber from ( select c.id,c.dept, sum (c.lcnumber) as cm_0,c.rcnumber as cm_1 from ( select a.dept,a.rcnumber,0 as lcnumber from ( select dept , count (1) rcnumber from 员工表 where ( 入职时间 != '' or 入职时间 is not null ) and date_format(入职时间, '%y-%m' )= '2019-09' group by 部门id order by 部门名称) a) c group by c.dept union all select d.id,d.dept,d.lcnumber as cm_0, sum (d.rcnumber) as cm_1 from ( select a.dept,a.lcnumber,0 as rcnumber from ( select dept , count (1) rcnumber from 员工表 where ( 离职时间 != '' or 离职职时间 is not null ) and date_format(入职时间, '%y-%m' )= '2019-09' group by 部门id order by 部门名称) a) d group by d.dept) t group by t.dept order by t.id |
最终就得到了我想要的结果
总结
到此这篇关于mysql合并结果接横向拼接字段的文章就介绍到这了,更多相关mysql合并结果接横向拼接字段内容请搜索开心学习网以前的文章或继续浏览下面的相关文章希望大家以后多多支持开心学习网!
原文链接:https://juejin.cn/post/6917513395981778958
您可能感兴趣
- mysql未使用索引的查询(如何在mysql进行查询缓存及失败的解决方法)
- MySql中date、datetime、time类型的区别
- mysql和explain哪个好(MySQL EXPLAIN输出列的详细解释)
- mysqltruncate分区自定义参数(MySQL truncate table语句的使用)
- mysql重启启动失败(MySQL8.0无法启动3534的解决方法)
- mysql是自动commit吗(详解MySQL与Spring的自动提交autocommit)
- centos7可以装mysql吗(详解腾讯云CentOS7.0使用yum安装mysql及使用遇到的问题)
- mysql的复制原理(浅析MySQL的WriteSet并行复制)
- mysql数据库下载安装步骤(MySQL数据库压缩版本安装与配置详细教程)
- mysql的sql语句优化5种方式(MySQL:五个常见优化SQL的技巧)
- mysqlbinlog怎么分析(MySQL中使用binlog时格式该如何选择)
- navicat连接报错10038(解决Navicat for Mysql连接报错1251的问题连接失败)
- mysql索引应该注意的地方(关于MySQL索引知识的小妙招)
- 执行mysqldump命令后数据库无反应(关于xampp启动不了mysql数据库的解决方法)
- mysql索引失效怎么办(MySQL选错索引的原因以及解决方案)
- mysql编码设置
- 八一节,说说中国女兵(八一节说说中国女兵)
- 王治郅菜鸟赛季已让八一带入正轨,大郅七大经典语录或是成功秘诀(王治郅菜鸟赛季已让八一带入正轨)
- 庆八一,重读经典红色语录,感悟互联网发展硬道理(重读经典红色语录)
- TVB新剧《黯夜守护者》将播,陈展鹏陈炜首次合作探讨人性(TVB新剧黯夜守护者将播)
- 新晋小花被称女版吴卓羲 将取代滕丽名成为TVB新一代御用女警(新晋小花被称女版吴卓羲)
- 艺人吴卓羲10年警察生涯,演足10年阿Sir,系咩玩法(艺人吴卓羲10年警察生涯)
热门推荐
- 在css中width是什么意思(Css深刻理解width:auto的用法)
- python中jieba库怎么用(详解Python数据可视化编程 - 词云生成并保存jieba+WordCloud)
- nginx配置文件位置(查看nginx配置文件路径和资源文件路径的方法)
- django后台运行命令(Django框架实现的普通登录案例使用POST方法)
- deepin数据库编程(deepin20.1系统安装MySQL8.0.23超详细的MySQL8安装教程)
- 怎么搭建apache服务器(Apache配置多个站点的方法)
- js闭包可以解决哪些问题(JavaScript中let避免闭包造成问题)
- 怎样恢复已删除的文件
- docker配置和启动(Docker的安装与配置命令代码实例)
- 详解SqlServer数据库中Substring函数的用法(详解SqlServer数据库中Substring函数的用法)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9