2016-07-20 5 views
0

私はSAP HANAにこのtable EFFがありますSAPのHANA - SQLスクリプト内の範囲によって集計日数

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 

私は日付順に並べ替えられOBJECT/PN/MANUF/QTYによってtableが、SQL statement集約されたビューを取得したいと思います 。ここに私が欲しいものがあります。 = 1

  • 1行数量で01から2016 06から2016まで

    • 1行を:私は常に入手

      OBJECT;PN;MANUFACTURER;DATE_FROM;DATE_TO;QTY  
      OBJ1;PN1;MAN1;201601;201602;1 (from 01-2016 to 02-2016, OBJ1 contained 1 PN1) 
      OBJ1;PN1;MAN1;201603;201603;2 (from 03-2016 to 03-2016, OBJ1 contained 2 PN1) 
      OBJ1;PN1;MAN1;201604;201606;1 (from 04-2016 to 06-2016, OBJ1 contained 1 PN1)

      私はすでに多くのソリューションをテストしてみたが、何もうまく機能していません... 03から2016 03から2016まで数量= 2

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

    私はに見てきましたFIRST_VALUE (partition by...)LAST_VALUEが、それが正常に動作していないようなSAP HANAで...

    は、あなたが任意のアイデアを持っていてくださいますか?


    注:私はすでにそれを行うにはcursorstored procedureを実装して、それが動作します(数時間で)、私ははるかに高速なものを必要としています。何十億本もの回線が懸念されるからです。

  • +0

    希望するロジックがまだ明確ではありません。 QTYが変わるたびに新しいグループを作成しますか?その場合は、ウィンドウ関数を使用して「最長ストリーク」の例を探す必要があります。 –

    +0

    ラールにお返事いただきありがとうございます。はい、私は数量で行をグループ化するが、時系列を尊重するソリューションが欲しい。私は 'LEAD' /' LAG'と 'ROW_NUMBER'関数に基づいた解決策を書いています。 – KrasshX

    答えて

    0

    は、私はあなたが私が計算にSQL Lead functionを使用述べたように

    enter image description here

    スクリーンショットを下回るようであるあなたのサンプルデータで

    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 
    

    出力を次のように何を取得したいことだと思います来月 SUM()集計関数のGroup By節を使用して、オブジェクト、PN、および製造元をベースにした月あたりの数量を集計します

    関連する問題