간단하면서도 잘풀리지않는(?) 문제가 있어 질문드립니다.
우선 데이터를 임시테이블에 넣어 두개의 테이블을 가져왔습니다.
서로 아무 연관없는 테이블입니다.
조회한 값은 아래와같습니다.
먼저 T1 입니다.
년월 | 금액 | 금액합 |
201605 | 20,000 | 200,000 |
201606 | 30,000 | 200,000 |
201607 | 40,000 | 200,000 |
201608 | 50,000 | 200,000 |
201609 | 60,000 | 200,000 |
그리고 T2 입니다.
년월 | 금액 | 금액합 |
201606 | NULL | 80,000 |
201608 | 80,000 | 80,000 |
제가 원하는 결과값은 모든 두개의 테이블의 년월에 대해 금액합을 구하는것입니다. (GROUP BY)
주의해야할것은 금액합은 두개의 테이블의 금액을 모두더한 금액입니다.
즉,
년월 | 금액 | 금액합 |
201605 | 20,000 | 280,000 |
201606 | 30,000 | 280,000 |
201607 | 40,000 | 280,000 |
201608 | 130,000 | 280,000 |
201609 | 60,000 | 280,000 |
이런식으로 뿌려줘야합니다.
차선책으로 원하는 값을 구하긴했으나, 쿼리가 너무 지저분하고 난잡하여 고수님들의 쿼리를 보고싶습니다.
답변부탁드립니다.
Comment 3
-
손꽁쥐
2016.10.14 11:17
SELECT A.년월, ISNULL(A.금액, 0) + ISNULL(B.금액, 0) AS '금액', MAX(A.금액합) OVER (PARTITION BY A.금액합) + MAX(B.금액합) OVER (PARTITION BY A.금액합) AS '금액합'-- , (SELECT MAX(금액합) FROM T1) + (SELECT MAX(금액합) FROM T2) AS '금액합'FROM T1 ALEFT JOIN T2 B ON A.년월 = B.년월 -
후알유?
2016.10.14 11:40
답변 감사합니다.
단, 두테이블에서 년월 컬럼은 유동적입니다. A가 B를 포함할수도있고, B가 A를 포함할수있습니다.
그걸 감안하여 짜신건지요..?
-
항해자™
2016.10.15 11:34
full outer join 과 coalesce를 사용해서 풀면 되겟네요,,,