0

私はこのtableEFFをオンにしていSAP HANAます:

OBJECT;PN;MANUFACTURER;MONTH;QTY   
OBJ1;PN1;MAN1;201601;1   
OBJ1;PN1;MAN1;201602;1   
OBJ1;PN1;MAN1;201603;2   
OBJ1;PN1;MAN1;201604;1   
OBJ1;PN1;MAN1;201605;1   
OBJ1;PN1;MAN1;201606;1   

BY DATE でソートされたSQL statement集計ビューを取得したいと思います。これが私が欲しいものです。tableOBJECT / PN / MANUF / QTY

OBJECT;PN;MANUFACTURER;DATE_FROM;DATE_TO;数量    
OBJ1;PN1;MAN1;201601;201602;1 (01-2016 から 02-2016 まで、OBJ1 には 1 つの PN1 が含まれていました)    
OBJ1;PN1;MAN1;201603;201603;2 (03-2016 から 03-2016 まで、OBJ1 には 2 PN1)    
OBJ1;PN1;MAN1;201604;201606;1 (2016 年 4 月から 2016 年 6 月まで、OBJ1 には 1 つの PN1 が含まれていた)

私はすでに多くのソリューションをテストしましたが、何もうまくいきません...私は常に取得します:

  • 2016 年 1 月から 2016 年 6 月までの 1 行、数量 = 1
  • 2016 年 3 月から 2016 年 3 月までの 1 行、数量 = 2

それは十分ではありません ...

Window FunctionsSAP HANAようFIRST_VALUE (partition by...)に探していましたがLAST_VALUE、適切に機能していません...

アイデアはありますか?


注:私はすでにそれを行うためにstored procedureaを実装しcursorており、(数時間で)動作しますが、もっと速いものが必要です。何十億行にも及ぶからです。

4

1 に答える 1

0

あなたが取得したいのは次のとおりだと思います

select 
    "OBJECT", 
    PN, 
    MANUFACTURER, 
    Month as fromMonth, 
    Lead(Month,1) over (partition by  "OBJECT", PN, MANUFACTURER Order by Month) as toMonth,
    sum(Qty) as qty 
from EFF
group by
    "OBJECT", 
    PN, 
    MANUFACTURER,
    Month

サンプルデータを含む出力は、以下のスクリーンショットのようになります

ここに画像の説明を入力

あなたが言及したように、私は翌月の計算にSQL Lead 関数を使用しました SUM() 集計関数の Group By 句を使用して、オブジェクト、PN、およびメーカーに基づいて月ごとの数量を収集しました

お役に立てば幸いです。

于 2017-01-27T08:31:26.903 に答える