首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在MySql中生成伪列

在MySql中生成伪列
EN

Stack Overflow用户
提问于 2017-09-20 14:04:33
回答 1查看 988关注 0票数 0

我有多个职务和多个部门的表,我想以这样的方式来处理数据,这样它就能给出部门明智和职务明智的薪资信息。我怎样才能做到这一点?能否仅使用select和case或类似的方法来实现?

输入表:

代码语言:javascript
复制
+------+-----------+--------+--------+--------------+
| 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    |
+------+-----------+--------+--------+--------------+

输出表:

代码语言:javascript
复制
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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-09-20 14:07:39

代码语言:javascript
复制
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
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46324247

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档