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

そして、世界のナス農場には 2500 万人の顧客がいないので、この質問の本質は何でしょうか?

于 2013-01-30T02:41:04.547 に答える