mysql - 在 MySql 中生成伪列

标签 mysql pivot-table

我有多个工作和多个部门的表,我想以这样的方式处理数据,它会提供部门明智和工作明智的薪水信息。我怎样才能做到这一点?是否可以仅使用 select 和 case 或类似的方法来实现?

输入表:

+------+-----------+--------+--------+--------------+
| id   | name      | salary | deptno | job          |
+------+-----------+--------+--------+--------------+
|    1 | Lucas     |  20000 |      1 | Founder      |
|    2 | Gabriello |  18300 |      1 | Cofounder    |
|    3 | Teodoor   |  15000 |      2 | Sales        | 
|    4 | Ronna     |  12600 |      3 | Marketing    |
|    5 | Dixie     |   6800 |      3 | Janitor      |
|    6 | Kelsey    |   6400 |      2 | Janitor      |
|    7 | Tatiania  |  15200 |      2 | Sales        |
|    8 | Goldia    |  12400 |      3 | Marketing    |
+------+-----------+--------+--------+--------------+

输出表:

deptno  Founder    Cofounder      Sales       Marketing   Janitor
------------------------------------------------------------------
  1      20000       18300          0             0         0
  2        0           0       15000+15200        0        6400
  3        0           0            0        12600+12400   6800

最佳答案

select deptno, 
       sum(case when job = 'Founder' then salary else 0 end) as Founder,
       sum(case when job = 'Cofounder' then salary else 0 end) as Cofounder,
       sum(case when job = 'Sales' then salary else 0 end) as Sales,
       sum(case when job = 'Marketing' then salary else 0 end) as Marketing,
       sum(case when job = 'Janitor' then salary else 0 end) as Janitor
from your_table
group by deptno

关于mysql - 在 MySql 中生成伪列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46324247/

相关文章:

pandas - Python中的大型枢纽分析表

excel - 合并数据透视表中的两列

sql - 如何使用数据透视表进行分组

mysql 以年表示的日期之间的差异

php - 具有不同字段集的记录的数据库设计

mysql - 根据之前的行获取值

excel - 新工作表上的 VBA 数据透视表

Laravel 与多个自定义数据透视表的多对多关系?

php - 检查远程主机上的 mysql 状态

php - 使用 MySQL LONGBLOB 上传和下载二进制文件时出错