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 |