【问题标题】:Create a SQL query that merges rows创建一个合并行的 SQL 查询
【发布时间】:2021-01-12 18:30:02
【问题描述】:

我有一个表格,用于存储打开和关闭订单的日期。类似这样:

id orderID status date
1 1 opened 2020-01-01
2 1 closed 2020-01-05
3 2 opened 2020-01-02

我需要一个返回以下结果的 SQL 查询:

orderId openedDate closedDate
1 2020-01-01 2020-01-05
2 2020-01-02 NULL

这是我尝试过的:

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;

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

【问题讨论】:

    标签: sql pivot


    【解决方案1】:

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

    【讨论】:

    • @vaorange 。 . .如果这回答了您的问题,您可以接受答案。
    猜你喜欢
    • 2016-07-26
    • 1970-01-01
    • 1970-01-01
    • 2021-12-25
    • 2021-05-01
    • 2012-07-09
    • 2014-06-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多