mysql - 从 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。
解决方案
只需使用条件聚合:
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;
推荐阅读
- python - 我的 model.fit 和 model.evaluate 无法正常工作,并且出现错误
- android - java.lang.RuntimeException:无法找到 AndroidJUnit4 的委托运行程序 androidx.test.internal.runner.junit4.AndroidJUnit4ClassRunner
- javascript - React Material UI 模式未打开
- python - 在 Python 中拆分列后分配多个列名(400 列)的快速方法
- javascript - 从 C# 单元测试调用 Javascript 函数
- python - 使用单词列表从数据框中定位行
- unit-testing - 如何模拟被测同一类中的方法?
- utf-8 - 为什么即使设置了语言环境也会出现错误?
- apache - htaccess 仅限制对 index.php 的访问
- tasmota - 无论如何让tasmota模仿按钮点击?