관 | 항 | 목 | 절 | 금액 |
A1 | A11 | A111 | A1111 | 20000 |
A1 | A11 | A111 | A1112 | 30000 |
A1 | A11 | A112 | A1121 | 20000 |
A1 | A12 | A121 | A1211 | 40000 |
A1 | A12 | A121 | A1212 | 30000 |
A1 | A12 | A121 | A1213 | 15000 |
B1 | B11 | B111 | B1111 | 20010 |
B1 | B11 | B111 | B1112 | 30010 |
B1 | B11 | B112 | B1121 | 20010 |
B1 | B12 | B121 | B1211 | 40010 |
B1 | B12 | B121 | B1212 | 30010 |
B1 | B12 | B121 | B1213 | 15010 |
C1 | C11 | C111 | C1111 | 20005 |
C1 | C11 | C111 | C1112 | 30005 |
C1 | C11 | C112 | C1121 | 20005 |
C1 | C12 | C121 | C1211 | 40005 |
C1 | C12 | C121 | C1212 | 30005 |
C1 | C12 | C121 | C1213 | 15005 |
회계 계정과목별 금액 입니다. 관, 항, 목, 절 별로 금액을 합쳐서 보여야 하는데
상위 그룹별 금액 합인듯 한데 금방 떠 오르진 않네요
언뜻 계층 구조인가 싶긴 한데 딱 거기 까지네요(In-Line View를 계속 쓰면서 안쪽 부터 구하면 될 듯은 한데 그럼,최소 3번 이상을 읽어야 하네요)
이것도 한번 확인 부탁드립니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | -- MSSQL 기준 WITH DT AS ( SELECT 'A1' AS 관, 'A11' AS 항, 'A111' AS 목, 'A1111' AS 절, 20000 AS 금액 UNION ALL SELECT 'A1' , 'A11' , 'A111' , 'A1112' , 30000 UNION ALL SELECT 'A1' , 'A11' , 'A112' , 'A1121' , 20000 UNION ALL SELECT 'A1' , 'A12' , 'A121' , 'A1211' , 40000 UNION ALL SELECT 'A1' , 'A12' , 'A121' , 'A1212' , 30000 UNION ALL SELECT 'A1' , 'A12' , 'A121' , 'A1213' , 15000 UNION ALL SELECT 'B1' , 'B11' , 'B111' , 'B1111' , 20010 UNION ALL SELECT 'B1' , 'B11' , 'B111' , 'B1112' , 30010 UNION ALL SELECT 'B1' , 'B11' , 'B112' , 'B1121' , 20010 UNION ALL SELECT 'B1' , 'B12' , 'B121' , 'B1211' , 40010 UNION ALL SELECT 'B1' , 'B12' , 'B121' , 'B1212' , 30010 UNION ALL SELECT 'B1' , 'B12' , 'B121' , 'B1213' , 15010 UNION ALL SELECT 'C1' , 'C11' , 'C111' , 'C1111' , 20005 UNION ALL SELECT 'C1' , 'C11' , 'C111' , 'C1112' , 30005 UNION ALL SELECT 'C1' , 'C11' , 'C112' , 'C1121' , 20005 UNION ALL SELECT 'C1' , 'C12' , 'C121' , 'C1211' , 40005 UNION ALL SELECT 'C1' , 'C12' , 'C121' , 'C1212' , 30005 UNION ALL SELECT 'C1' , 'C12' , 'C121' , 'C1213' , 15005 ) SELECT COALESCE (관, '총계' ) AS 관 , COALESCE (항, CASE WHEN GROUPING (관) = 0 THEN '소계' ELSE NULL END ) AS 항 , COALESCE (목, CASE WHEN GROUPING (항) = 0 THEN '소계' ELSE NULL END ) AS 목 , COALESCE (절, CASE WHEN GROUPING (목) = 0 THEN '소계' ELSE NULL END ) AS 절 , SUM (금액) AS 총금액 FROM DT GROUP BY ROLLUP (관, 항, 목, 절) ORDER BY GROUPING (관), 관 , GROUPING (항), 항 , GROUPING (목), 목 , GROUPING (절), 절 |