상위계정코드별 합계금액 0 2 4,924

by 구사일생 상위계정별합계 계층별합계 [2025.03.07 21:12:46]


금액
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번 이상을 읽어야 하네요)

이것도 한번 확인 부탁드립니다.

by Hinori_ [2025.03.10 09:37:13]
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(절), 절

 


by 구사일생 [2025.03.10 21:15:01]

Hinori 님 감사합니다.

근데 깜놀인게 혹시 connect by로 답을 주시면 어쩌나 오라클이 아니라 다시 with recursive로 요청을 해야 하나 했는데(엉뚱한 생각을 ..)

전혀 생각을 못했네요 , 역시 제 생각은 늘 우물안 개구리네요 . db2여서 위 문법이 아마도 바로 될듯 합니다. 하니면 ORODER BY 정도(?)만 

하면 될 듯 합니다. 상위 계정 합이라 재귀문법 으로만 생각을 했네요

암튼 이건은 바로 활용을 해 보겠습니다. 감사합니다.

 

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입