【发布时间】:2013-03-03 09:42:36
【问题描述】:
我在创建 Oracle 查询以报告特定日期(一系列月份中每个月的第一天)的订单历史状态时遇到了困难。我搜了又搜,没有人问过类似的问题。这似乎是一个直截了当的问题,所以希望有人能提供帮助!这是我的例子:
订单表:
ORDER_NUMBER STATUS DATE
50001000 Created 01-15-2010
50001000 Released 02-20-2010
50001000 Completed 02-25-2010
50001000 Closed 03-10-2010
50001035 Created 01-20-2010
50001035 Released 01-25-2010
50001035 Completed 04-05-2010
50001035 Closed 05-30-2010
所以我需要的输出是每个月初每个订单的状态。像这样的:
DATE ORDER_NUMBER STATUS
12-01-2009
01-01-2010
02-01-2010 50001000 Created
02-01-2010 50001035 Released
03-01-2010 50001000 Completed
03-01-2010 50001035 Released
04-01-2010 50001000 Closed
04-01-2010 50001035 Released
05-01-2010 50001000 Closed
05-01-2010 50001035 Completed
06-01-2010 50001000 Closed
06-01-2010 50001035 Closed
07-01-2010 50001000 Closed
07-01-2010 50001035 Closed
..etc
是否有一些原生关键字可以在没有大量连接和子查询的情况下完成这项工作?
谢谢,
加勒特
【问题讨论】:
-
听起来您可以按月/年进行分区,然后为每个订单选择最大日期的状态。也许这个线程可能会有所帮助:stackoverflow.com/questions/561836/oracle-partition-by-keyword 另外,订单
50001035的状态不应该是Released,因为它是在 2010 年 1 月 25 日发布的? -
是的,你是对的,我的示例中有一个错误,现在已将其更改为 2010 年 2 月 1 日发布。谢谢!