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 数据丢失排查案例)
- mysql8.0配置优化参数(MySQL 8.0 新特性之检查约束的实现)
- idea怎样连接mysql(IDEA配置连接MYSQL数据库遇到Failed这个问题解决)
- mysql是否支持透明数据加密(MySQL的加密解密的几种方式小结)
- mysql的decimal类型(MySQL数据类型DECIMAL用法详解)
- 合理设置服务mysql最大连接数(MySQL正确修改最大连接数的3种方案)
- mysql索引优化技巧(MySQL如何优化索引)
- 查看mysql执行计划关键字(带你学习MySQL执行计划)
- mysql的默认隔离级别(再有人问你MySQL的隔离级别是什么,就把这篇文章发给他!)
- mysql数据库数据分析(详解MySQL数据库千万级数据查询和存储)
- mysql时间戳和datetime对比(MySQL时间设置注意事项的深入总结)
- mysql连接数与缓存(Mysql连接数设置和获取的方法)
- mysql语句性能分析(聊聊MySQL的COUNT*的性能)
- Mysql中CONCAT、CONCAT_WS字符串拼接函数
- docker中mysql连接命令(docker 如何修改mysql的root密码)
- mysql中数据类型的学习体会(MySQL 实现lastInfdexOf的功能案例)
- 给孩子选购保温杯,注意这4个步骤,比颜值更重要(给孩子选购保温杯)
- 保温好 容量大 颜值高 保温杯你给娃娃买对了吗(保温好容量大颜值高)
- 《道德经》 人生避开骄狂,才能免去祸患(道德经人生避开骄狂)
- 郭麒麟(郭麒麟)
- 古人十句 戒骄 名言,醍醐灌顶,受益匪浅(古人十句戒骄名言)
- 《道德经》:功成不局,泰而不骄(道德经:功成不局)
热门推荐
- Mysql中CONCAT、CONCAT_WS字符串拼接函数
- html5炫酷代码(HTML5超炫酷粒子效果的进度条的实现示例)
- html5新的表单元素新的特性(HTML5表单验证特性知识点小结)
- vue3.0 黑暗风格(Vue3.0 手写放大镜效果)
- php验证码初始化教程交流(PHP token验证生成原理实例分析)
- jenkins回滚docker容器(关于docker部署的jenkins跑git上的程序的问题)
- 如何用jquery进行表单验证(jQuery实现发送验证码控制按钮禁用功能)
- sql server设置自增(sql server建表时设置ID字段自增的简单方法)
- vue3中的setup的参数(Vue3中ref与reactive的详解与扩展)
- nginx负载均衡5种方法(Nginx如何配置负载均衡)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9