如何将行展平为列(字段)值

时间:2020-02-06 20:21:24

标签: sql group-by

我有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         |
+--------------+----------+--------+------------+

1 个答案:

答案 0 :(得分:0)

您可以使用聚合:

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

之所以可行,是因为从字符串角度来看,'Y'大于'N'。