怎么在Mysql中横向拼接字段

  介绍

怎么在Mysql中横向拼接字段?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

先查出入职的人数

SELECT  dept ,计数(1),rcNumber 得到员工表,   WHERE (,入职时间,!=,& # 39;& # 39;   一、才能入职时间,IS  NOT 零),以及DATE_FORMAT(入职时间,,& # 39;%猴Y - % # 39;)=, & # 39; 2019 - 09 & # 39;   GROUP  BY 部门ID   ORDER  BY 部门名称

查询记录

怎么在Mysql中横向拼接字段

在查询出离职的人数sql:

SELECT  dept ,计数(1),rcNumber 得到员工表,   WHERE (,离职时间,!=,& # 39;& # 39;   一、才能离职时间,IS  NOT 零),以及DATE_FORMAT(入职时间,,& # 39;%猴Y - % # 39;)=, & # 39; 2019 - 09 & # 39;   GROUP  BY 部门ID   ORDER  BY 部门名称

结果集

怎么在Mysql中横向拼接字段

我想要的数据是这样的

怎么在Mysql中横向拼接字段

我有了以下的尝试

1。我将两个查询结果看成两个表,使用了左join ,不瞒您说数据格式是我想要的但是想了想要是右表的记录比较多使用这个不就会少数据吗(右同理)

2。我使用联盟all 这个不是想要的数据直接将两个结果相加竖向拼接

3。我使用了如同这种select * from a b 这个结果是笛卡尔积,两个表相乘的结果

以上方法的sql就不贴出意思应该明确了

我不信我就一直问百度,百度终于有了回答我就尝试了一番

1。将入职sql处理如下

SELECT  a.dept, a.rcNumber, 0, as  lcNumber 得到(SELECT  dept ,计数(1),rcNumber 得到员工表,   WHERE (,入职时间,!=,& # 39;& # 39;   一、才能入职时间,IS  NOT 零),以及DATE_FORMAT(入职时间,,& # 39;%猴Y - % # 39;)=, & # 39; 2019 - 09 & # 39;   GROUP  BY 部门ID   ORDER  BY 部门名称),一个

离职sql处理如下:

SELECT  a.dept, a.lcNumber, 0, as  rcNumber 得到(SELECT  dept ,计数(1),rcNumber 得到员工表,   WHERE (,离职时间,!=,& # 39;& # 39;   一、才能离职时间,IS  NOT 零),以及DATE_FORMAT(入职时间,,& # 39;%猴Y - % # 39;)=, & # 39; 2019 - 09 & # 39;   GROUP  BY 部门ID   ORDER  BY 部门名称),一个

在外面包一层也可不包直接在原sql上加我是为不破坏基本语句这样当然不够

2。将两个语句进行竖向拼接合并联合拼和接

SELECT  dept ,总和(cm_1), as  rcNumber,总和(cm_0), as  lcNumber 从(,SELECT  c.id c.dept,总和(c.lcNumber), as  cm_0, c.rcNumber  as  cm_1 得到;   (SELECT  a.dept a.rcNumber 0, as  lcNumber 得到(SELECT  dept ,计数(1),rcNumber 得到员工表,   WHERE (,入职时间,!=,& # 39;& # 39;   一、才能入职时间,IS  NOT 零),以及DATE_FORMAT(入职时间,,& # 39;%猴Y - % # 39;)=, & # 39; 2019 - 09 & # 39;   GROUP  BY 部门ID   ORDER  BY 部门名称),a), c  GROUP  BY  c.dept   UNION  ALL    SELECT  d.id、d.dept d.lcNumber  as  cm_0,总和(d.rcNumber), as  cm_1 得到;   (SELECT  a.dept a.lcNumber 0, as  rcNumber 得到(SELECT  dept ,计数(1),rcNumber 得到员工表,   WHERE (,离职时间,!=,& # 39;& # 39;   一、才能离职职时间,IS  NOT 零),以及DATE_FORMAT(入职时间,,& # 39;%猴Y - % # 39;)=, & # 39; 2019 - 09 & # 39;   GROUP  BY 部门ID   ORDER  BY 部门名称),a), d  GROUP  BY  d.dept), t  GROUP  BY  t.dept  ORDER  BY  t.id

最终就得到了我想要的结果

怎么在Mysql中横向拼接字段

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注行业资讯频道,感谢您对的支持。

怎么在Mysql中横向拼接字段