sql - 从一个表中获取时间戳(显示在不同的行上)并将其显示在我的查询中
问题描述
我正在尝试编写 SQL,其中有一个表,当订单状态从一种状态更改为另一种状态时,该表具有不同的时间戳。我需要捕获这些时间戳并将其显示在我的 SQL 输出中。
如果我使用 join 命令,它会给我 6 个不同的行,其中所有信息都相同,但不同订单状态在更改时的时间戳不同。有没有办法捕获这些不同的时间戳并将其显示为我的 SQL 输出。
作为一个简单的示例订单,从 DC Allocated 更改为 Packed on 12/15/2019 10:00 AM,然后从 Packed 更改为 Shipped on 12/15/2019 12:00 PM,我需要将其显示为:
目前,我得到 2 行具有相同数据但不同时间戳的 Packed 和 Shipped 状态。这里有多个表,但 Order 表给出了订单号,而状态表给出了处理者更新订单时的交易状态和时间。
解决方案
基本模式是在条件表达式上进行聚合,例如
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
推荐阅读
- amp-html - 在 amp-carousel 上禁用 SWIPE 手势
- javascript - 使用 Angular Ionic 中的类单击事件
- node.js - Sequelize - 使用包含的模型属性的 Where 子句
- unix - awk 打印 2 个模式之间的行 - 作为变量传递的模式
- vim - 如何在vim中增加一个数字
- javascript - React Material UI Autocomplete 使用 React Hook Forms 问题
- django - 如何将下拉列表 html 中的选定值获取到 django 视图?
- design-patterns - 为什么更改类或接口是一个问题?
- node.js - 无法转义 AWS Cloudwatch 查询字符串中的反斜杠
- android - 图像在 android studio 的 Note 10 和 One Plus 设备上旋转