首页 > 解决方案 > SQL:将两行合二为一

问题描述

在 MySQL 上,我想将 2 行合并为 1,例如:

| Name | Value | Res |
| foo  | Type  | 0.2 |
| foo  | Group | aaa |
| bar  | Type  | 0.3 |
| bar  | Group | bbb |

我的预期结果是:

| Name | Type   | Group |
| foo  |  0.2   |  aaa  |
| bar  |  0.3   |  bbb  |

我想将两个具有一些常见值的条目合并到一个具有两列的列中,该Res列的值与列的值不同Type。我怎样才能做到这一点?谢谢

标签: mysqlsql

解决方案


您的预期结果需要做枢轴尝试使用条件聚合函数来实现。

CREATE TABLE T(
   Name varchar(50),
     Value varchar(50),
     Res varchar(50)
);



insert into t values ( 'foo' ,'Type' , '0.2');
insert into t values ( 'foo' ,'Group' , 'aaa');
insert into t values ( 'bar' ,'Type' , '0.3');
insert into t values ( 'bar' ,'Group' , 'bbb');

查询 1

SELECT Name,
      MAX(CASE WHEN Value= 'Type'  THEN Res END) Type,
      MAX(CASE WHEN Value= 'Group 'THEN Res END) `Group` 
FROM T
GROUP BY Name

结果

| Name | Type | Group |
|------|------|-------|
|  bar |  0.3 |   bbb |
|  foo |  0.2 |   aaa |

推荐阅读