rollup함수로 소계, 합계 구하려는데 소계에 더하는 값을 살리면서 소계를 구하려면 어떻게 해야 하는지 알려주세요.. 0 3 1,519

by 명규니 [Oracle 기초] rollup 소계 합계 정렬 [2019.06.19 17:00:31]


SELECT  A.RPT_ROW_CDNM_1
,       A.RPT_ROW_CDNM_2
,       B.TTRM_LDD_COGT_AMT
FROM 코드정보 A	
   , 집계 B		
WHERE A.RPT_TC = 'GA199'
	AND   A.RPT_ROW_C = B.RPT_ROW_C
	AND SUBSTR(A.RPT_ROW_C,1,1) = 'C'

위 SQL로 얻은 데이터 결과로 아래 결과를 얻었는데요.

특정금전신탁 수시입출금     231113064842
특정금전신탁 퇴직연금        2109206554561
특정금전신탁 퇴직연금        1121371191403
특정금전신탁 퇴직연금        352958358146
특정금전신탁 퇴직연금        0
특정금전신탁 기타              210215123732
특정금전신탁 자문형           0
특정금전신탁 자사주           57800000000
특정금전신탁 채권형           4023081188868
특정금전신탁 주식형           346117503663
특정금전신탁 주가연계신탁  399917700000
특정금전신탁 정기예금형     2949486711544
불특정금전신탁 불특정금전신탁 0
금전신탁소계 금전신탁소계  0

SELECT  A.RPT_ROW_CDNM_1
,       A.RPT_ROW_CDNM_2
,       SUM(B.TTRM_LDD_COGT_AMT)
FROM 코드정보 A
   , 집계 B 
WHERE A.RPT_TC = 'GA199'
    AND   A.RPT_ROW_C = B.RPT_ROW_C
    AND SUBSTR(A.RPT_ROW_C,1,1) = 'C'
    GROUP BY ROLLUP(A.RPT_ROW_CDNM_1, A.RPT_ROW_CDNM_2)

rollup 함수를 써서 소계 합계를 구하려고 했는데,

금전신탁소계 금전신탁소계                0
금전신탁소계                                  0
특정금전신탁 기타                           210215123732
특정금전신탁 자문형                        0
특정금전신탁 자사주                        57800000000
특정금전신탁 채권형                        4023081188868
특정금전신탁 퇴직연금                     3583536104110
특정금전신탁 수시입출금                  231113064842
특정금전신탁 정기예금형                  2949486711544
특정금전신탁 주가연계신탁               399917700000
특정금전신탁 주식형                        346117503663
특정금전신탁                                  11801267396759
불특정금전신탁 불특정금전신탁          0
불특정금전신탁                               0
                                                   11801267396759

 

퇴직연금은 소계값만 조회되고, 합계값이 잘못 나와서요.

소계에 더하는 퇴직연금값들을 놔두면서 소계값도 구하려면 어떻게 해야 할지 이곳저곳 기웃거려봤는데, 예제대로 조회되지 않아서 막혀 있습니다..가르침 부탁드립니다.

 

 

by 마농 [2019.06.19 18:25:05]
SELECT a.rpt_row_cdnm_1
     , a.rpt_row_cdnm_2
     , SUM(b.ttrm_ldd_cogt_amt) amt
  FROM 코드정보 a
     , 집계     b
 WHERE a.rpt_tc = 'GA199'
   AND a.rpt_row_c = b.rpt_row_c
   AND a.rpt_row_c LIKE 'C%'
-- GROUP BY ROLLUP(a.rpt_row_cdnm_1, a.rpt_row_cdnm_2)
 GROUP BY ROLLUP(a.rpt_row_cdnm_1, (a.rpt_row_cdnm_2, ROWNUM))
;

 


by 명규니 [2019.06.20 13:51:19]

도움 감사드립니다.

그런데 제시해주신 조건으로 rollup함수를 적용하면 더해야 하는 값들은 보존이 되는데,

소계값이 나오지 않습니다. 다음과 같은 표를 만들려고 한 건데요. 가능할까요?

특정금전 채권형 채권형 10000
특정금전 퇴직연금 확정급여 10000
  퇴직연금 확정기여 20000
  퇴직연금 소계 30000
  기타 기타 0
합계     40000

 


by 마농 [2019.06.20 14:19:17]

원 질문의 항목은 2개인데?
추가 질문의 항목은 3개네요?
원본 대비 결과표로 해서 질문을 명확하게 다시 해주세요.

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