2

每周我都会从我的茄子农场向我的各种客户发送大量茄子。客户通常每周购买相同数量的茄子,但偶尔数量会有所不同。由于我有超过 25,000,000 名客户(大农场),因此我想将他们的购买信息压缩到一个更易于管理的表格中,以用于我正在处理的报告。这是我的源数据的样子 -

CustAcct -------------- PurchaseWeekEndDate ----- EggplantsPurchased

 123                  1/1/2012                    50

 123                  1/8/2012                    50

 123                  1/15/2012                   50

 123                  1/22/2012                   60

 123                  1/29/2012                   50

 123                  2/5/2012                    50

我希望我的新表中的数据看起来像这样 -

CustAcct------- StartRangePWEnd Date----- EndRangePWEndDate ------EggplantsPurchased

 123            1/1/2012           1/15/2012                50

 123            1/22/2012          1/22/2012                60

 123            1/29/2012          2/5/2012                 50

有任何想法吗?

4

1 回答 1

2

这是一个比较难的问题。要解决它,您需要识别相同的订单组。您可以使用相关子查询来执行此操作,以查找每个拥有不同数量茄子的客户的下一个日期。这用作组标识符。

一旦你有了它,剩下的就是聚合:

select CustAcct, min(PurchaseWeekEndDate), max(PurchaseWeekEndDate), EggplantsPurchased
from (select t.*,
             (select min(PurchaseWeekEndDate)
              from t t2
              where t.CustAcct = t2.CustAcct and t.EggplantsPurchased <> t2.EggplantsPurchased and t2.PurchaseWeekEndDate > t.PurchaseWeekEndDate
             ) as nextDate
      from t
     ) t
group by CustAcct, nextDate, EggplantsPurchased

而且,既然世界上没有茄子农场拥有 25,000,000 名顾客,那么这个问题的真正本质是什么?

于 2013-01-30T02:41:04.547 回答