sql - 创建一个合并行的 SQL 查询
问题描述
我有一个表格,用于存储打开和关闭订单的日期。它类似于:
ID | 订单号 | 地位 | 日期 |
---|---|---|---|
1 | 1 | 打开 | 2020-01-01 |
2 | 1 | 关闭 | 2020-01-05 |
3 | 2 | 打开 | 2020-01-02 |
我需要一个返回以下结果的 SQL 查询:
订单号 | 打开日期 | 关闭日期 |
---|---|---|
1 | 2020-01-01 | 2020-01-05 |
2 | 2020-01-02 | 空值 |
这是我尝试过的:
SELECT
orderId,
CASE WHEN status = 'opened' THEN date END AS openedDate,
CASE WHEN status = 'closed' THEN date END AS closedDate
FROM
orders
GROUP BY
orderId;
但我没有得到想要的结果。
解决方案
您应该会收到语法错误,因为select
列与group by
. 使用聚合:
SELECT orderId,
MAX(CASE WHEN status = 'opened' THEN date END) AS openedDate,
MAX(CASE WHEN status = 'closed' THEN date END) AS closedDate
FROM orders
GROUP BY orderId;
推荐阅读
- python - 如何从熊猫的列中过滤第一次出现的普通话字符并将其放入另一列
- c# - 从 iCloud API 获取联系人列表
- java - 如何获取缓存的数据 Apache ignite
- javascript - 在桌面 Outlook 中打开时,附加的电子邮件以撰写模式显示
- html - CSS Animated Timer 在 iPad 上显示异常
- android - ExoPlayer - 如何将下载的 DASH 流片段组合成单个 MP4 文件?
- android-databinding - android-binding:onclick 取决于变量
- c# - C# - 将多个 blob 保存到 azure 帐户中
- xamarin - 通过 Xamarin for Android 中的 Web 链接处理深层链接
- linux - 获取每个ip地址的前3行/ifconfig接口命令Linux