首页 > 解决方案 > 从 SQL 中预先存在的行创建新列的最佳方法是什么?

问题描述

所以我有一个看起来像这样的表:

事物 日期 日期类型
1 1/12 开始日期
1 1/14 结束日期
2 2/14 开始日期
2 2/15 结束日期

我正在尝试将所有内容压缩为如下所示:

事物 开始日期 结束日期
1 1/12 1/14
2 2/14 2/15

编写此查询的最佳方法是什么?我对 SQL 比较陌生,所以我不确定用什么来表达这个词的最佳方式。我在想这样的事情:

SELECT thing, date AS start_date, date AS end_date
FROM t1 ON...

我确信有一种简单的方法可以做到这一点,我只是不熟悉 SQL。

标签: mysqlsql

解决方案


只需使用条件聚合:

select thing,
       max(case when data_type = 'start_date' then date end) as start_date,
       max(case when data_type = 'end_date' then date end) as end_date
from t
group by thing;

推荐阅读