首页 > 解决方案 > 如何将行展平为列(字段)值

问题描述

我有将 Job_ids 拆分为多行的数据(我必须这样做,因为以前我必须从每个 job_id 中拆分出团队成员,然后识别他们的团队

我的数据当前采用的格式如下(未显示),但每个 job_id 都有一个有团队分配的员工,因此对于每一行,只有一个列中有一个是:

+--------------+----------+--------+------------+
| job_id       | team1    | team2  | team3      |
+--------------+----------+--------+------------+
|            1 |       NO | NO     | YES        |
|            1 |      YES | NO     | NO         |
|            2 |      YES | NO     | NO         |
+--------------+----------+--------+------------+

而且我想像这样通过 Job_id 将其“展平”,以获得所有“是”以“覆盖”“否”值,以便我可以在一个工作行中看到哪些团队正在从事这项工作:

+--------------+----------+--------+------------+
| job_id       | team1    | team2  | team2      |
+--------------+----------+--------+------------+
|            1 |       YES| NO     | YES        |
|            2 |      YES | NO     | NO         |
+--------------+----------+--------+------------+

标签: sqlgroup-by

解决方案


您可以使用聚合:

select 
    job_id,
    max(team1) team1,
    max(team2) team2,
    max(team3) team3
from mytable
group by job_id

这是有效的,因为在字符串方面,'Y'大于'N'.


推荐阅读