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 38690 게시물 읽기
No. 38690
당월합계,전년동월합계,전월합계를 구할려구합니다.
작성자
노정균(notul2000)
작성일
2011-07-13 09:18ⓒ
2011-07-13 09:38ⓜ
조회수
7,252

질문드립니다.

첫번째 -------------------------------------------------------------------------------------

당월합계는 where 조건절에 월걸구 sum해서 잘 가져오는데

문제는 전월이랑 전년동월입니다.

그래서

select yymm,case when yymm = '전월' then 합계 else 0 end as 전월합계

                        ,case when yymm = '당월' then 합계 else 0 end as 당월합계

from aaa

where yymm  between  '전월' and  '당월'

요렇게 했는데  왜 전월 한쪽만 나오는지? 음....전월합계에 서브쿼리는 데이터수가 많아서 안되구,

between을 걸어사 해두 안되네요.

조건절에 하나의 년월을 입력받아서 '201107'을 입력받아서 '201106'의 합계와 '201007'의 합계를 구하구 싶은데

어떻게 효율적으로 구할수있을까요? 조인을 쓸려니 너무 길구 같은 쿼리 두번 돌리는거같아서요..

 

두번째 질문 ---------------------------------------------------------------------------------------------------------

마스터 테이블에 조직id들과 그조직의 상위id(uppid)들이 있습니다.

대략 5단계정도 되구요..  최상위(1)-하위(2)-하위(3)-하위(4)-하위(5) 계층구조이죠.

상위 2단계를 기준으로 총실적을 구하려구 합니다.

문제는 총실적이 나와있는 테이블에 최하위단인 5단계이구 상위id들이 없습니다. 하위id뿐입니다.

이 총실적을 가진 최하위5단계 id를  좌측의 상위2단계와 조인을 걸려구 하는데 셀프조인을 거니 너무 복잡한거같구,

start with connected by 는 잘 모르겠네요..ㅠ.ㅠ

원하는건 상위 몇단계까지 나오게 쿼리를 짜고싶습니다.

              상위         상위            상위

id01     a                 b                 c

id02     z                 b                 e

id03     d                 w                q

머 대략 이정도입니다. 예를 들면 국가 - 권역(경기도) - 시도(구리시) - 동(교문동) 이런식으로요...

설명이 많이 부족하네요..

부탁드리겠습니다.

 

 

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

1. 전월과 동년동월 은 조건에 년이 다르기 때문에 between 을 걸면 안되구요 in 절을 쓰시면 되겠네요

select yymm,case when yymm = '전월' then 합계 else 0 end as 전월합계

                        ,case when yymm = '당월' then 합계 else 0 end as 당월합계

from aaa

where yymm in (to_char(add_months(to_date('201105','yyyymm'),-1),'yyyymm'),  to_char(add_months(to_date('201105','yyyymm'),-12),'yyyymm'))

 

2. 다단계 관리프로그램 만드시는거 같아서 알려드리기 싫지만...

 

샘플로 주신 자료가 좀 안맞는거같네요..

 

힌트를 드리면 마스터테이블에서 connect by 절을 이용하여 필요한 단계의 상위 id 를 가져와서

실적테이블과 조인만 하면 될거같네요..

 

 

1님이 2011-07-13 11:45에 작성한 댓글입니다. Edit

 

SUM(CASE WHEN P.YYMM = [:M1_TO_MM] THEN S.SALE_M_QTY ELSE 0 END) AS "월판매실적",
SUM(CASE WHEN P.YYMM = TO_CHAR(ADD_MONTHS(TO_DATE('201105','YYYYMM'),-1),'YYYYMM') THEN S.SALE_M_QTY ELSE 0 END) AS "전월판매실적",

AND  P.YYMM BETWEEN TO_CHAR(ADD_MONTHS(TO_DATE([:M1_TO_MM],'YYYYMM'),-1),'YYYYMM') AND [:M1_TO_MM]

이렇게 써서 1번은 해결했네요...ㅠ.ㅠ

답변감사드립니다.

이제 2번을 고민해봐야겠습니다.샘플자료는 제가 임의로 만들었네요...예를 들어 설명하느라요..^^

현재 SI 파견와서 개발중..다단계아닌데..ㅠ.ㅠ

노정균(notul2000)님이 2011-07-13 13:56에 작성한 댓글입니다.
이 댓글은 2011-07-13 13:59에 마지막으로 수정되었습니다.
[Top]
No.
제목
작성자
작성일
조회
38693쿼리문의 재문의 [1]
레이첼
2011-07-13
3309
38692계층구조입니다. 이틀간삽질하고있네요.
노정균
2011-07-13
3871
38691구분자가 없는 데이타 sqlldr 시에 오류 질문 입니다. [3]
김용남
2011-07-13
6207
38690당월합계,전년동월합계,전월합계를 구할려구합니다. [2]
노정균
2011-07-13
7252
38689CASE WHEN EXISTS [1]
레이첼
2011-07-12
9138
38688오라클에서 RTRIM에 대한 문의 [1]
gemini2k
2011-07-12
3920
38687오라클 쿼리 및 ORA-29275질문 입니다.
오라
2011-07-12
4507
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.017초, 이곳 서비스는
	PostgreSQL v16.4로 자료를 관리합니다