每周我都会从我的茄子农场向我的不同客户发送大量的茄子。顾客通常每周购买相同数量的茄子,但偶尔会有不同的数量。由于我拥有超过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
有什么想法吗?
答案 0 :(得分: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名顾客,这个问题的真正本质是什么?