고객번호 C_NO | 구분코드1 G_CODE_1 | 구분코드2 G_CODE_2 | 구분코드3 G_CODE_3 | 구분코드4 G_CODE_4 |
테이블 A (5개 컬럼 모두 PK)
고객번호 C_NO | 구분코드1 G_CODE_1 | 구분코드2 G_CODE_2 | 구분코드3 G_CODE_3 | 구분코드4 G_CODE_4 | 데이타 DATA_1 | 데이타 DATA_2 | 금액 AMT |
테이블 B (고객번호~구분코드4 PK)
select A.C_NO
,A.G_CODE_1
,A.G_CODE_2
,A.G_CODE_3
,A.G_CODE_4
,( select sum(amt)
from B
where A.C_NO = B.C_NO
and A.G_CODE_1 = B.G_CODE_1
and A.G_CODE_2 = B.G_CODE_2
and A.G_CODE_3 = B.G_CODE_3
and A.G_CODE_4 = B.G_CODE_4
and B.DATA_1 = '000001' )
,( select sum(amt)
from B
where A.C_NO = B.C_NO
and A.G_CODE_1 = B.G_CODE_1
and A.G_CODE_2 = B.G_CODE_2
and A.G_CODE_3 = B.G_CODE_3
and A.G_CODE_4 = B.G_CODE_4
and B.DATA_1 = '000002' )
/*
B.DATA_1의 값이 000001 부터 쭈우우욱 계쏙 있다고 가정..
B.DATA_2의 값이 000001 부터 쭈우우욱 계쏙 있다고 가정..
이 때 각각의 PK들에 대한 B 테이블의 AMT 값을 구하려고 합니다.
이하 생략
*/
from A
질문드리겠습니다 ㅠㅠ!!!
select절에 서브쿼리에 예시로 00001,00002의 값에 대한 sum값을 가져오는 부분이 있는데요~
00001 부터 값이 계속 있어서 항목이 많아지면 속도가 그만큼 느려져서... 혹시 효율적으로 가져올 수 있는 방법이 있는지 궁금합니다..!
감사합니당..
SELECT a.c_no , a.g_code_1 , a.g_code_2 , a.g_code_3 , a.g_code_4 , SUM(DECODE(b.data_1, '000001', b.amt)) amt_1 , SUM(DECODE(b.data_1, '000002', b.amt)) amt_2 , SUM(DECODE(b.data_1, '000003', b.amt)) amt_3 , SUM(DECODE(b.data_1, '000004', b.amt)) amt_4 , SUM(DECODE(b.data_1, '000005', b.amt)) amt_5 FROM tab_a a LEFT OUTER JOIN tab_b b ON a.c_no = b.c_no AND a.g_code_1 = b.g_code_1 AND a.g_code_2 = b.g_code_2 AND a.g_code_3 = b.g_code_3 AND a.g_code_4 = b.g_code_4 GROUP BY a.c_no, a.g_code_1, a.g_code_2, a.g_code_3, a.g_code_4 ORDER BY a.c_no, a.g_code_1, a.g_code_2, a.g_code_3, a.g_code_4 ;