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 41270 게시물 읽기
No. 41270
기준값에 대한 정렬, 부탁좀 드려봅니다.
작성자
기쁨이(dojava)
작성일
2016-10-26 10:22ⓒ
2016-10-26 10:22ⓜ
조회수
6,635

안녕하세요

 

TRACE SDT TRACECODE AGENCYNM CNT EPAY TAXPAY UNIQUEKEY

00 201608 4000 회사예비 7 53626595 5362709 1

00 201608 6010 하남천현 11 32660298 3266087 2

00 201609 4000 회사예비 12 69526867 6952757 1

00 201609 6010 하남천현 20 42699179 4270001 2

01 201608 6010 하남천현 14 79702256 7970379 2

01 201608 4000 회사예비 17 109403586 10940590 1

01 201609 6010 하남천현 18 80404712 8040627 2

01 201609 4000 회사예비 17 105078175 10508009 1

==================================================================================

이러한 데이터를 SDT, TRACECODE 를 기준으로 아래와 같이 데이터를 정렬하고 싶습니다.

==================================================================================

TRACE SDT TRACECODE AGENCYNM CNT EPAY TAXPAY UNIQUEKEY TRACE TRACECODE AGENCYNM CNT EPAY TAXPAY UNIQUEKEY

00 201608 4000 회사예비 7 53626595 5362709 1 01 6010 하남천현 14 79702256 7970379 2

00 201608 6010 하남천현 11 32660298 3266087 2 01 4000 회사예비 17 109403586 10940590 1

00 201609 4000 회사예비 12 69526867 6952757 1 01 6010 하남천현 18 80404712 8040627 2

00 201609 6010 하남천현 20 42699179 4270001 2 01 4000 회사예비 17 105078175 10508009 1

 

DECODE를 써보고 해봐도 잘 되질 않아서요 부탁좀 드려보겠습니다.

 

* 글쓰기를 했는데 죄다 밀려서 보기가 좀 애매하네요....

 

 

 

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

00 집합이 왼쪽에 01 집합이 오른쪽에 배치되는 것 같네요.
그런데 두 집합간 연결고리가 애매합니다.
어떤 기준으로 연결했는지?
혹 잘못 연결한 것은 아닌지?

마농(manon94)님이 2016-10-26 13:25에 작성한 댓글입니다.

우선 감사합니다. 마농님..

 

두 집합간 연결의 KEY 값은 SDT (201608, 201609..) 입니다.

월별 집계 데이터를 추출하려고 하는것입니다.

 

2016년 08월 00 데이터, 01 데이터

2016년 09월 00 데이터, 01 데이터

..

 

이런식의 데이터를 추출하고 싶은데 좀 애매한 질문이 되었나요..

 

기쁨이(dojava)님이 2016-10-26 14:42에 작성한 댓글입니다.

월별 연결된것 까지도 이미 자료를 통해 파악 했었구요.
월별 2건씩 인 자료가 서로 어떻게 연결되는지 연결키가 없네요?
차라리 TRACECODE 또는 AGENCYNM 나 UNIQUEKEY 로 연결되었더라면 좋았을 텐데.
정 반대로 연결되어 있으니? 이상해서 질문드린 거죠.


연결고리가 없다면? 정렬기준이라도 있는 것인지?
CNT 순으로 정렬되는가 해서 봤지만 그것도 아니구요.

마농(manon94)님이 2016-10-26 15:10에 작성한 댓글입니다.
이 댓글은 2016-10-26 15:13에 마지막으로 수정되었습니다.

감사합니다.

 

처음으로 돌아가서 저 데이터가 나오는 쿼리 입니다.

 

SELECT TRACE

, sdt

, targetagencycode as tracecode

, MAX(x.etc) AS agencynm

, MAX(sendcnt) as cnt

, MAX(epay) AS epay

, MAX(taxpay) AS taxpay

, targetagencyuniquekey as uniquekey

FROM (SELECT '00' AS TRACE

, SUBSTR (startdate, 1, 6) AS sdt

, MAX (targetagencycode) AS targetagencycode

, COUNT (sendagencycode) AS sendcnt

, SUM (ABS (epay)) AS epay

, SUM (ABS (taxpay)) AS taxpay

, targetagencyuniquekey

FROM code.taxsendreport

WHERE targetagencycode IS NOT NULL

AND taxgbn = 'Y'

AND startdate >= '20160801'

AND enddate <= '20160930'

AND targetagencycode IN ('4000', '6010')

GROUP BY startdate, targetagencycode, targetagencyuniquekey

ORDER BY startdate asc

) a, taxreport x

WHERE a.targetagencyuniquekey = x.uniqueseq

GROUP BY TRACE, a.sdt, targetagencycode, targetagencyuniquekey

UNION ALL

SELECT MAX(TRACE) AS TRACE

, sdt

, sendagencycode as tracecode

, MAX(x.etc) AS agencynm

, MAX(targetcnt) as cnt

, MAX(epay) AS epay

, MAX(taxpay) AS taxpay

, sendagencyuniquekey as uniquekey

FROM (SELECT '01' AS TRACE

, SUBSTR (startdate, 1, 6) AS sdt

, MAX (sendagencycode) AS sendagencycode

, COUNT (targetagencycode) AS targetcnt

, SUM (ABS (epay)) AS epay

, SUM (ABS (taxpay)) AS taxpay

, sendagencyuniquekey

FROM code.taxsendreport

WHERE sendagencycode IS NOT NULL

AND taxgbn = 'Y'

AND startdate >= '20160801'

AND enddate <= '20160930'

AND sendagencycode IN ('4000', '6010')

GROUP BY startdate, sendagencycode, sendagencyuniquekey

ORDER BY startdate asc

) a,

taxreport x

WHERE a.sendagencyuniquekey = x.uniqueseq

GROUP BY a.sdt, sendagencycode, sendagencyuniquekey

 

--------------------------------------------------

월별 집계 데이터를 추출하기 위함이였습니다.

양방향으로 나열되어 있는 데이터를 UNION 으로 가져왔습니다.

위 쿼리를 날려보니 본문의 첫번째 데이터가 나온것이구요.

그래서 나온 데이터를 정렬하려다 보니 뭔가 이해가 되지 않으신것 같습니다.^^;; 제가 너무 두서없이 얘기해서 그런것 같습니다.

기쁨이(dojava)님이 2016-10-26 16:08에 작성한 댓글입니다.
이 댓글은 2016-10-26 16:10에 마지막으로 수정되었습니다.

1. 쿼리가 틀린게 아닌가 하는 의심이 가는 부분이 있네요.
  처음엔 일자로 GROUP BY 했다가
  마지막엔 월로 GROUP BY 하네요?
  특별히 이렇게 하는 이유가 있는 것인지?
  월별 GROUP 에서는 SUM 을 안하고 MAX 를 하네요.
  이게 정말 원하는 결과가 맞는지 의심되구요?


2. 원하시는 결과를 얻기 위해서는 정렬기준이 정해져야 할 것 같네요.
  제시하신 쿼리는 정렬이 되어 있지 않아서 자료가 뒤석인 느낌이구요.
  각각의 자료를 기준에 맞게 정렬하여 양쪽에 보여주면 됩니다.


SELECT sdt
     , rn
     , MIN(DECODE(trace, '00', tracecode) tracecode_00
     , MIN(DECODE(trace, '00', agencynm ) agencynm_00
     , MIN(DECODE(trace, '00', cnt      ) cnt_00
     , MIN(DECODE(trace, '00', epay     ) epay_00
     , MIN(DECODE(trace, '00', taxpay   ) taxpay_00
     , MIN(DECODE(trace, '00', uniquekey) uniquekey_00
     , MIN(DECODE(trace, '01', tracecode) tracecode_01
     , MIN(DECODE(trace, '01', agencynm ) agencynm_01
     , MIN(DECODE(trace, '01', cnt      ) cnt_01
     , MIN(DECODE(trace, '01', epay     ) epay_01
     , MIN(DECODE(trace, '01', taxpay   ) taxpay_01
     , MIN(DECODE(trace, '01', uniquekey) uniquekey_01
  FROM (SELECT trace
             , sdt
             , tracecode
             , agencynm
             , cnt
             , epay
             , taxpay
             , uniquekey
             , ROW_NUMBER() OVER(
               PARTITION BY trace, sdt  -- 분류기준
               ORDER BY uniquekey       -- 정렬기준
               ) rn
          FROM (-- 서브쿼리 --)
        )
 GROUP BY sdt, rn
 ORDER BY sdt, rn
;

마농(manon94)님이 2016-10-27 08:53에 작성한 댓글입니다.

감사합니다 ^^

마농님 덕분에 잘 해결 되었습니다...

말씀하신 부분

1.일자 GROUP BY -> 월별 GROUP BY 부분은 제가 잘못된 작성입니다.

2.첫번째 GROUP BY 에서는 SUM, 두번째 MAX 는 생각을 잘못했네요 ;;

 

현재 쿼리 수정하여 개발해보고 있습니다.

결과는 다시 알려드려보도록 할께요..^^

 

 

 

기쁨이(dojava)님이 2016-10-27 10:17에 작성한 댓글입니다.
이 댓글은 2016-10-27 15:12에 마지막으로 수정되었습니다.
[Top]
No.
제목
작성자
작성일
조회
41273하루 6천만건의 데이터 생성 - 월 20억건의 데이터 발생
김대일
2016-11-01
5991
41272쿼리에서 빈값 넣기 방법좀 알려주세요. [2]
모던
2016-11-01
6778
41271ODBC 고수분들 답변 좀 부탁 드립니다.
그노그노
2016-10-26
6166
41270기준값에 대한 정렬, 부탁좀 드려봅니다. [6]
기쁨이
2016-10-26
6635
41269일자별 집계 쿼리 문의 [2]
이담원
2016-10-26
6733
41268게시판 파일첨부 소스 질문입니다 ㅜㅜ
문종훈
2016-10-25
6075
41267시작,종료일자 겹치는 구간에 대해 문의 드려요 [2]
김준수
2016-10-25
6311
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2023 DSN, All rights reserved.
작업시간: 0.048초, 이곳 서비스는
	PostgreSQL v16.1로 자료를 관리합니다