首页 > 解决方案 > 创建一个合并行的 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;

但我没有得到想要的结果。

标签: sqlpivot

解决方案


您应该会收到语法错误,因为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;

推荐阅读