基于 where 条件下的一个日期列创建 2 列

问题描述 投票:0回答:1

我想根据 StatusCode 的 where 条件将日期列解析为 2 列。

我的查询是:

select OrderID, StatusCode, Date_stamp 
from xyz where StatusCode ='Shipped'
left join 
select OrderID, StatusCode, Date_stamp 
from xyz where StatusCode ='Ordered'

我尝试再次引入查询,简单地对 OrderID 进行左连接,并根据 where =ordered 仅引入 Date_stamp 列,认为它将把数据汇总到单个记录中。任何指导表示赞赏。


| OrderID  | StatusCode | Date_stamp | 
| -------- | ---------  | --------   |
| 1        | Ordered    | 1/1/2024   |
| 1        | Shipped    | 1/5/2024   |
| 2        | Ordered    | 1/22/2024  |
| 2        | null       | null       |

预期结果:

订单ID 状态代码 订购日期 发货日期
1 已发货 2024 年 1 月 1 日 2024 年 1 月 5 日
2 已订购 2024 年 1 月 22 日
sql parsing
1个回答
0
投票

这应该给出预期的输出 -

选择订单 ID、最大(状态代码)、最大(订购日期)、最大(发货日期) 从( 选择订单ID、状态代码、 当 StatusCode = 'Ordered' 时,则 Date_stamp else Null 结束为 OrderedDate, 当 StatusCode = 'Shipped' 时,则为 Date_stamp,否则为 Null,以 ShippedDate 结束 来自 xyz) 作为温度 按订单ID分组

© www.soinside.com 2019 - 2024. All rights reserved.