SELF JOIN

자기 자신과 JOIN하는 것을 말한다. 예를들어 테이블에는 직속상관, 직속부서 코드만 존재한다고 할때, 직속상관, 직속부서에 대한 정보를 알고싶을때 사용한다. 그리고 누적합을 구할때에도 쓰인다.

 

1
2
3
4
SELECT *
  FROM TABLE T1
  LEFT OUTER JOIN TABLE T2 ON T1.PK = T2.PK 
                          AND T1.컬럼 = T2.현재부서컬럼
cs


여기서 T1이 가준테이블(자식테이블) T2가 부모테이블이 된다.
기준테이블에 부모테이블 컬럼이 추가되어 옆으로 붙는다고 생각하면 된다.

생각하는 관점을 기준테이블에서 생각해야한다.

누적합

예를들어서 일별로 값을 가지고있는 테이블이 있다고 가정하자



이 테이블을 월단위로 누적합을 구하고, 소계를 구하고, 테이블 전체의 총계를 구해보자.


우선 셀프조인을 사용하여 자신보다 큰 DATE를 가진 행을 JOIN시킨다. (여기서 주의할점은 자기보다 큰 행이면서 월이 같은 행이여야한다.) 


그리고 나중에 정렬을 위해서 SORT 컬럼을 만들어주면 

이렇게 하면 누적합을 구한 첫번째 행들이 만들어진다.

그리고 총계를 구하고 SORT를 걸면

다음과 같다.


코드






'SQL > MS-SQL' 카테고리의 다른 글

테이블변수  (0) 2017.09.20
테이블 컬럼변경  (0) 2017.09.20
join Diagram  (0) 2017.09.19
LEFT OUTER JOIN / WHERE  (0) 2017.09.19
NULL 비교하기  (0) 2017.09.19

+ Recent posts