database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
ㆍOracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
Oracle Q&A 40301 게시물 읽기
No. 40301
엉뚱한 합계 구하기
작성자
궁금
작성일
2013-11-04 18:36
조회수
6,304

합계를 구하고자합니다.
rollup을 써봤습니다
그러나 문제는,, 아래 쿼리처럼 제일 바깥에서 조건문을 줍니다
(ex) where a = 'a'

플랫폼 구성상,,, 화면에서 조회시 검색조건 값이  아래 쿼리처럼
해당조회쿼리 제일 바깥에 자동으로 들어가게 되어있습니다.
저 조건문이 고정이라면 group by rollup(a,( a,b,c)) 이렇게 하면되겠지요,,

그러나  a,b,c 중에 조건값이 있을수도 없을수도있습니다
조건값이 없으면 제일 하단에 합계가 저절로 나오지만,,
조건값이 하나라도 들어간다면,, 합계가 나오지 않습니다.
그리고 그 조건값이 3개일지 1개일지 abc중 무엇일지 알수없습니다
이런경우 어떻게 해야하나요?

select * from (
with tt as (select  'a' a , 'b' b, 'c' c, 100 d , 200 e, 300 f  from dual
                union all
               select  'd' a , 'e' b, 'f' c, 150 d , 250 e, 350 f  from dual
               union all
               select  'a' a , 'e' b, 'f' c, 150 d , 250 e, 350 f  from dual
               )
select a,b,c, sum(d), sum(e), sum(f)  from tt
group by rollup(a,( a,b,c))
) ttt
where a = 'a'

이 글에 대한 댓글이 총 1건 있습니다.

되도록이면 조건절을 안쪽에 넣으시는게 좋구요.
그게 불가능하다면 어쩔수 없이 편법을 좀 쓰셔야 겠네요.
조건을 주기 위한 별도의 가공컬럼을 만들어 사용하는 방법입니다.
조건절도 이 가공컬럼을 이용하도록 고쳐져야겠네요.
SELECT *
  FROM (
        WITH tt AS
        (
        select  'a' a, 'b' b, 'c' c, 100 d, 200 e, 300 f FROM dual
        UNION ALL SELECT 'd', 'e', 'f', 150, 250, 350 FROM dual
        UNION ALL SELECT 'a', 'e', 'f', 150, 250, 350 FROM dual
        )
        SELECT a, b, c
             , SUM(d) d
             , SUM(e) e
             , SUM(f) f
             , ','||wm_concat(DISTINCT a)||',' aa
             , ','||wm_concat(DISTINCT b)||',' bb
             , ','||wm_concat(DISTINCT c)||',' cc
          FROM tt
         GROUP BY ROLLUP(a, (b, c))
        ) ttt
-- WHERE a = 'a'
 WHERE aa LIKE '%,'||'a'||',%'
;

마농(manon94)님이 2013-11-05 16:54에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
40304CONNECT BY 쿼리문 좀 도와주세요 [6]
김정훈
2013-11-07
6608
40303dmp파일 CMD창에서 import할때... [2]
한상원
2013-11-07
5755
40302프로시저로 되어있는것 쿼리 추출할수 있을까요? [3]
궁금이
2013-11-06
6609
40301엉뚱한 합계 구하기 [1]
궁금
2013-11-04
6304
40300테이블 스페이스 축소 질문 [1]
운우
2013-11-04
6533
40299글자 자르기 질문입니다. [2]
서기라
2013-11-04
6355
40298쿼리 질문입니다. [1]
저런
2013-11-01
5551
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.022초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다