首页 > 解决方案 > 从一个表中获取时间戳(显示在不同的行上)并将其显示在我的查询中

问题描述

我正在尝试编写 SQL,其中有一个表,当订单状态从一种状态更改为另一种状态时,该表具有不同的时间戳。我需要捕获这些时间戳并将其显示在我的 SQL 输出中。

如果我使用 join 命令,它会给我 6 个不同的行,其中所有信息都相同,但不同订单状态在更改时的时间戳不同。有没有办法捕获这些不同的时间戳并将其显示为我的 SQL 输出。

作为一个简单的示例订单,从 DC Allocated 更改为 Packed on 12/15/2019 10:00 AM,然后从 Packed 更改为 Shipped on 12/15/2019 12:00 PM,我需要将其显示为:

SQL 输出

目前,我得到 2 行具有相同数据但不同时间戳的 Packed 和 Shipped 状态。这里有多个表,但 Order 表给出了订单号,而状态表给出了处理者更新订单时的交易状态和时间。

标签: sql

解决方案


基本模式是在条件表达式上进行聚合,例如

select OrderNumber,
       max(case when Status = 'Packed' then StatusDate else null end) Packed,
       max(case when Status = 'Shipped' then StatusDate else null end) Shipped
from OrderStatus
group by OrderNumber

推荐阅读