[ Oracle - 순차적으로 누적하기9 ]

 

일별 월누적매출 구하기

실 데이터는 <표1-실데이터>처럼 존재하며, <표2-결과>와 같은 결과 데이터를 조회

 

<표1-실데이터>

기준일자

코드

금액

2009-01-01

A

100

2009-01-01

B

200

2009-01-02

A

150

2009-01-02

B

200

2009-01-02

C

100

2009-01-03

A

300

2009-01-03

B

100

<표2-결과>

기준일자

코드

금액

누적금액

2009-01-01

A

100

100

2009-01-01

B

200

200

2009-01-02

A

150

250

2009-01-02

B

200

400

2009-01-02

C

100

100

2009-01-03

A

300

550

2009-01-03

B

100

500

2009-01-03

C

100

100

 

 

Posted by 농부지기
,

[ Oracle - 순차적으로 누적하기8 ]

 

Posted by 농부지기
,

[ Oracle - 순차적으로 누적하기7 ]


 

그룹코드 LOT 걸린시간(NUMBER) 시작시간
(DATE)
ECOMP01 6230394 0.4 2010-09-29 15:43
ECOMP01 6229155 0.14  
ECOMP01 6229177 0.02  
ECOMP01 6230479 0.41  
ECOMP01 6230694 0.02  
ECOMP01 6230487 0.16  
ECOMP01 6230501 0.03  
ECOMP01 6231286 0.07  
ECOMP01 6230552 0.81  
ECOMP02 6228735 0.17 2010-10-01 19:18
ECOMP02 6228948 1.33  
ECOMP02 6228949 1.33  
ECOMP02 6230272 0.67  
ECOMP02 6230274 0.67  
ECOMP02 6230275 0.67  
ECOMP02 6230273 2.67  
ECOMP02 6230276 1.33  
ECOMP02 6230277 3.33  
ECOMP02 6230817 0.67  
ECOMP02 6230819 0.67  

 

위 테이블과 같은 데이터 구조에서
시작시간의 빈값에 순차적으로 시작시간 + 걸린시간값이 그룹코드별로 들어가 있는 sql

 

 

Posted by 농부지기
,

[ Oracle - 순차적으로 누적하기6 ]

 

 


A B
B C
B D
A E

이런 테이블이 있습니다.
트리구조를 만들면
A
B
C
D
E

이런그림이 나옵니다.
C 1000
D 2000
E 5000

최 하위 코드로 입력되는 값이 이럴때  각 상위 코드로 누적을 시켜야 합니다.
A     8000
  B   3000
    C 1000
    D 2000
  E   5000

 

Posted by 농부지기
,

[ Oracle - 순차적으로 누적하기5 ]

 

Posted by 농부지기
,

[ Oracle - 순차적으로 누적하기4 ]

 

with t as(
select  '20120502' dat, '10001' lotno, 21120 inp_qty, 0 god_qty from dual union all
select  '20120505' dat, '10001' lotno, 21120 inp_qty, 7000 god_qty from dual union all
select  '20120507' dat, '10001' lotno, 0 inp_qty, 13000 god_qty from dual
)
select  * from t


DAT LOTNO    INP_QTY    GOD_QTY
-------------------------------------------------------------
20120502   10001   21120     0
20120505   10001   21120     7000 --> inp_qty - god_qty = 14120
20120507   10001   14120   13000    

 

 

 

 

Posted by 농부지기
,

[ Oracle - 순차적으로 누적하기3 ]

 

Date   Code Amt
20120701   1111 1000
20120701   1112  2000
20120702    data 없음
20120703    1111 3000
20120704    1112 5000
20120704    3333 1000
20120705 data 없음


결과: 20120705 기준 조회

Date   Code Amt
20120701    1111 1000
20120701    1112  2000

20120702    1111 1000
20120702    1112 2000

20120703    1111  4000
20120703    1112 2000

20120704    1111   4000
20120704    1112   7000
20120704    3333   1000

20120705    1111    4000
20120705    1112    7000
20120705    3333    1000
.
.
.

위와 같은 결과를 얻고 싶습니다. (1일 부터 해당일자 까지 누적 합계,  1, 1~2, 1~3, 1~4, 1~5일 이런식으로 한달치 누적합계)
특정일자에 data가 없으면 전날 까지의 누적 합계가  그 날짜의 합계가됨.

 

Posted by 농부지기
,

[ Oracle - 순차적으로 누적하기1 ]

 

<RAW 데이터>

DATE BOH OUT EOH
20120420 200 10 190
20120625 190 40 150
20120810 150 20 130
20120825 130 50 80
20120914 80 5 75
20121006 75 20 55
20121016 55 10 45


<결과>
DATE STOCKQTY OUTQTY SUMQTY
201206 150 40 50
201207 150 0 40
201208 130 70 110
201209 80 5 75
201210 55 30 105


일자별로 사용량이 기록된 RAW 데이터가 있습니다.
월별 재고, 월별 사용량, 해당월 포함 직전 2개월 사용량을 구하는 것 입니다.

BOH - 기초재고
OUT - 사용량
EOH - 기말재고
SUM - 직전 2개월 사용량(해당월 포함)

6월 결과 데이터  SUM 값은 4월, 5월, 6월 사용량입니다.
결과 데이터는 6월부터 보여 주지만 SUM 값은 RAW 데이터 중 4월, 5월 데이터를 잡아와야 합니다.

 

Posted by 농부지기
,

[ Oracle - 순차적으로 누적하기2 ]

 

Posted by 농부지기
,

[ Oracle - 순차적으로 누적하기0 ]

 

Posted by 농부지기
,