2016-07-20 5 views
0

나는 SAP HANAtable 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 

가 나는 SQL statement와 DATE으로 분류 OBJECT/PN/MANUF/QTY하지만 으로 table의 집계보기를 얻을 싶습니다 . 여기 내가 원하는 걸.

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)

이미 많은 솔루션을 테스트했지만 아무것도 난 항상 얻을 ... 잘 작동하지 : 01-2016에서

  • 1 라인을 수량 = 1
  • 1 라인 06-2016로 2

= 수량과 03-2016에 03-2016에서 내가에 찾아 봤는데

... 충분하지 않습니다in SAP HANAFIRST_VALUE (partition by...)LAST_VALUE과 같지만 제대로 작동하지 않습니다 ...

어떤 아이디어가 있습니까?


참고 : 나는 이미 그것을 할 수있는 cursorstored procedure을 구현, 그것은 (몇 시간) 작동하지만 훨씬 빠르게 뭔가가 필요합니다. 왜냐하면 그것은 수십억 개의 라인을 염려하기 때문입니다.

+0

원하는 로직이 아직 명확하지 않습니다. QTY가 변경 될 때마다 새로운 그룹을 원하십니까? 이 경우 창 함수를 사용하여 "가장 긴 줄무늬 찾기"예제를 찾아야합니다. –

+0

Lars에 감사드립니다. 예, 수량별로 행을 그룹화하지만 시간 순서를 존중하는 솔루션을 원합니다. 저는'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 및 제조업체를 기반으로 한 달에 수량을 수집합니다

도움이되기를 바랍니다.