(색을 좀더 표시해서 쉽게 이해하도록 수정하였습니다. 2012-04-04 15:40)
안녕하세요
스토어드 프로시져 쿼리좀 짜는데요 참 안되네요
해서 여쭤보겠는데요.
각 월별로 구분_ITEM3에 1과 2로 분리되는 항목의 데이터가 있습니다. 노란색처럼요.
데이터 테이블 구조는 아래와 같고요.
D_UID |
구분_ZONE |
구분_ITEM1 |
구분_ITEM2 |
구분_ITEM3 |
CAL_YEAR |
C_JAN |
C_FEB |
C_MAR |
C_APR |
C_MAY |
C_JUN |
C_JUL |
C_AUG |
C_SEP |
C_OCT |
C_NOV |
C_DEC |
3 |
1 |
1 |
NULL |
1 |
2012 |
11.9 |
12.9 |
13.8 |
15.3 |
23.3 |
29.3 |
74.8 |
84.9 |
101 |
120.4 |
125.4 |
113.8 |
6 |
1 |
2 |
NULL |
1 |
2012 |
18 |
8 |
5 |
34 |
23 |
13 |
18 |
20 |
13 |
14 |
13 |
25 |
7 |
1 |
3 |
NULL |
1 |
2012 |
44 |
25 |
23 |
13 |
9 |
18.1 |
22 |
31 |
20 |
17 |
50 |
70 |
8 |
1 |
4 |
NULL |
1 |
2012 |
27.7 |
30 |
6 |
3 |
19 |
24 |
11.5 |
26.3 |
11.3 |
5.8 |
4.1 |
4.7 |
9 |
1 |
5 |
NULL |
1 |
2012 |
1.4 |
1.4 |
1.4 |
1.4 |
1.4 |
1.4 |
1.4 |
1.4 |
1.4 |
1.4 |
1.4 |
1.4 |
10 |
1 |
6 |
NULL |
1 |
2012 |
0.4 |
0.4 |
0.4 |
0.4 |
0.4 |
0.4 |
0.4 |
0.4 |
0.4 |
0.4 |
0.4 |
0.4 |
11 |
1 |
7 |
NULL |
1 |
2012 |
2 |
4 |
1 |
4 |
5 |
3 |
6 |
10 |
4 |
8 |
4 |
6 |
12 |
1 |
8 |
1 |
1 |
2012 |
0 |
0 |
3 |
1 |
3 |
4 |
2 |
3 |
7 |
8 |
5 |
4 |
13 |
1 |
8 |
2 |
1 |
2012 |
1 |
3 |
2 |
3 |
4 |
4 |
3 |
2 |
5 |
3 |
2 |
5 |
14 |
1 |
8 |
3 |
1 |
2012 |
2 |
0 |
3 |
0 |
4 |
3 |
2 |
1 |
0 |
2 |
1 |
5 |
17 |
1 |
1 |
NULL |
2 |
2012 |
15.1 |
9.93 |
NULL |
NULL |
NULL |
NULL |
NULL |
NULL |
NULL |
NULL |
NULL |
NULL |
이것을 아래와 같이 구분아이템 1,2,3을 조합하여 구분조합코드로 유니크하게 하고
(물론 앞에 유니크한 시퀀스ID(자동증가 ID)가 있지만요.=D_UID 컬럼)
구분아이템1,구분아이템2,구분아이템3 순서인데..구분아이템3은 값이 1,2순으로 정렬합니다.
문제는 12월끝에 누적과 합계를 추가해야되는데요.
합계는... 단순히 해당 1월~12월까지의 SUM(합계)를 하는것이지만,
누적은... 예를들어 노란색의 데이터만 보면( 구분아이템1의 데이터가 1에 대해서만 설명드리자면),
구분아이템3에서 값2에 해당하는 월별 값이 있는 최종 값.
즉,2월까지에 해당하는 합계가 각각 누적컬럼에 값1과 값2에 들어가야됩니다.
좀 이해하기 힘들수도 있겠는데요.
쉽게 말씀드리면, 다시 밑에 표를 봐주세요.
밑에 노란색에서 누적 컬럼의 값1과 값2는 각각 노란색 구분 아이템3의 데이터2(빨간색표시)에 해당하는 1월과 2월의 15.1과 9.93이라는 NULL이 없는( 데이터가 있는 최대 컬럼의 값)까지의 합계를 말합니다.
누적 값1 = 11.9 + 12.9
누적 값2 = 15.1 + 9.93
이 되는것이죠.
마찬가지로 구분 아이템1에서 2에 해당하는 누적 컬럼 값3과 값4를 구하는것을 예를들겠습니다.
누적컬럼의 값3과 값4를 구해야되는데요.
누적컬럼의 값3 = 구분 아이템1에서 데이터가 2 이면서, 구분아이템3의 데이터가 2인, 1월부터 12월까지의 데이터들중에 NULL이 아닌 최대 월(데이터가 있는 최대 월)의 구분아이템3의 1값의 누계.
3월까지는 15라는 데이터가 있고 4월부터는 NULL이니까 3월까지의 합계입니다. 즉 18 + 8 + 5 가 되는거죠.
누적컬럼의 값4 = 구분 아이템1에서 데이터가 2 이면서, 구분아이템3의 데이터가 2인, 1월부터 12월까지의 데이터들중에 NULL이 아닌 최대 월(데이터가 있는 최대 월)의 구분아이템3의 1값의 누계.
3월까지는 15라는 데이터가 있고 4월부터는 NULL이니까 3월까지의 합계입니다. 즉 19 +10 +15 가 되는거죠.
누적 값 5 = 44+25
누적 값 6 = 7 +8
...............
저렇게 구분아이템3의 2값에 해당하는 데이터가 있는 월까지의 합계,평균등을 구하는것인데요.
구분조합코드 |
구분_ZONE |
구분_ITEM1 |
구분_ITEM2 |
구분_ITEM3 |
CAL_YEAR |
C_JAN |
C_FEB |
C_MAR |
C_APR |
C_MAY |
C_JUN |
C_JUL |
C_AUG |
C_SEP |
C_OCT |
C_NOV |
C_DEC |
누적 |
합계 |
101 |
1 |
1 |
NULL |
1 |
2012 |
11.9 |
12.9 |
13.8 |
15.3 |
23.3 |
29.3 |
74.8 |
84.9 |
101 |
120.4 |
125.4 |
113.8 |
값1 |
|
102 |
1 |
1 |
NULL |
2 |
2012 |
15.1 |
9.93 |
NULL |
NULL |
NULL |
NULL |
NULL |
NULL |
NULL |
NULL |
NULL |
NULL |
값2 |
|
201 |
1 |
2 |
NULL |
1 |
2012 |
18 |
8 |
5 |
34 |
23 |
13 |
18 |
20 |
13 |
14 |
13 |
25 |
값3 |
|
202 |
1 |
2 |
NULL |
2 |
2012 |
19 |
10 |
15 |
NULL |
NULL |
NULL |
NULL |
NULL |
NULL |
NULL |
NULL |
NULL |
값4 |
|
301 |
1 |
3 |
NULL |
1 |
2012 |
44 |
25 |
23 |
13 |
9 |
18.1 |
22 |
31 |
20 |
17 |
50 |
70 |
값5 |
|
302 |
1 |
3 |
NULL |
2 |
2012 |
7 |
8 |
NULL |
NULL |
NULL |
NULL |
NULL |
NULL |
NULL |
NULL |
NULL |
NULL |
값6 |
|
401 |
1 |
4 |
NULL |
1 |
2012 |
27.7 |
30 |
6 |
3 |
19 |
24 |
11.5 |
26.3 |
11.3 |
5.8 |
4.1 |
4.7 |
값7 |
|
402 |
1 |
4 |
NULL |
2 |
2012 |
NULL |
NULL |
NULL |
NULL |
NULL |
NULL |
NULL |
NULL |
NULL |
NULL |
NULL |
NULL |
값8 |
|
어떻게하면 누적 값1,값2,....를 쿼리로 쉽게 성능 고려해서 짤 수있을까요.
많은 도움 부탁드립니다. |