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 38783 게시물 읽기
No. 38783
두개의 쿼리가 결과값이 다른데...같게 맞추고 싶은데~~
작성자
한상원(ennedi)
작성일
2011-08-16 16:40
조회수
3,973

안녕하세요.. 쿼리 두문장이 있는데..

1과 2 문장에서 결과값이 다르게 나오는데 필드는 그대로 유지한상태로

1의 결과값이 나오게 해야합니다..방법이 있을까요..?

좋은하루 보내세요...

1)결과값  32,928

SELECT a.deshcd,                                              
       a.desedt,                                       
       a.deposn,                                     
       a.decrus,                                     
       c.gomidd,                                     
       ROUND(SUM(DECODE(c.gotxkn,'1',DECODE(a.desegb,'0',((b.COOTAM-(b.COOTAM/1.1))*b.COUNIT)*a.deseqt,
                                                     ((b.COOTAM-(b.COOTAM/1.1))*b.COUNIT)*a.deseqt * -1),0))) AS puvat2 
FROM SCDESETB a,             
            SCCOMBTB b,             
            SCGOODTB c              
WHERE a.deshcd = :pis_shcd    
  AND a.desedt = :pis_date    
  AND a.desegb IN ('0','1')   
  AND a.decomb = '1'          
  AND b.coshcd = a.deshcd     
  AND b.cocmcd = a.degocd     
  AND c.goshcd = b.coshcd     
  AND b.codeyn = 'N'
  AND c.gogocd = b.cogocd     
GROUP BY a.deshcd,            
         a.desedt,            
         a.deposn,                  
         a.decrus,           
         c.gomidd
                 
                 
   

2)   결과값 32,925         
SELECT a.deshcd,                                              
      a.desedt,                                       
      c.gogocd,                                       
      a.demakn,                                       
      a.desehh,                                       
      ROUND(SUM(DECODE(c.gotxkn,'1',DECODE(a.desegb,'0',((b.COOTAM-(b.COOTAM/1.1))*b.COUNIT)*a.deseqt,
                                                        ((b.COOTAM-(b.COOTAM/1.1))*b.COUNIT)*a.deseqt * -1),0))) AS puvat2
FROM SCDESETB a,            
            SCCOMBTB b,            
            SCGOODTB c             
WHERE a.deshcd = :pis_shcd   
  AND a.desedt = :pis_date   
  AND a.desegb IN ('0','1')  
  AND a.decomb = '1'         
  AND b.coshcd = a.deshcd    
  AND b.cocmcd = a.degocd     
  AND c.goshcd = b.coshcd     
  AND b.codeyn = 'N'
  AND c.gogocd = b.cogocd     
GROUP BY a.deshcd,            
         a.desedt,            
         c.gogocd,            
         a.demakn,            
         a.desehh                

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

 group by 절이 달라서 결과수가 다를수 있겠네요..

 having 절을 추가하여 중복컬럼이 있는지 확인해보세요..

1님이 2011-08-16 17:39에 작성한 댓글입니다. Edit

1과 2 문장에서 결과값이 다르게 나오는데 필드는 그대로 유지한상태로
1의 결과값이 나오게 해야합니다....라는 질문을 이해 못하겠습니다.
1)결과값 32,928
2)결과값 32,925
이부분도 이해가 안가요 결과값이라는게 건수인건가요? 조회되는 값인건가요?
두 쿼리의 결과와 원하시는 결과집합을 표로 보여주시면 좋을 것 같습니다.

마농(manon94)님이 2011-08-17 01:10에 작성한 댓글입니다.

늦은시간에 댓글달아 주셔서 감사합니다.

생각해보니 질문이 제대로가 안됐군요..

건수는 group by로 묶는게 서로다르기 때문에 차이가 있습니다.

저기서 결과값이란... puvat2 필드값의 합을 말합니다.

1번은 건수가 38건

2번은 건수가 380건이 나옵니다.

select된 결과를 엑셀로 옮겨서 puvat2 값을 SUM하면 단 10원이내에서

차이가 납니다. 건수는 당연히 차이가 발생하겠지만....원단위까지 맞추고

싶어서 질문드린겁니다....좋은하루 보내세요

 

한상원(ennedi)님이 2011-08-17 09:18에 작성한 댓글입니다.
이 댓글은 2011-08-17 09:19에 마지막으로 수정되었습니다.

+, -, * 등은 결과가 똑 떨어지지만 / 는 결과가 똑 떨어지지 않죠.
거기다가 round등의 함수는 원본값을 보정하는 함수이며
거꾸로 원본 값을 구할 수 없는 함수입니다.
건건이 반올림하여 합산하면 결과가 달라질 수밖에 없습니다.
건건이 반올림하지 마시고 최종 한번만 반올림 하세요.

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

답변감사합니다

그런이유로 미세하게 차이가 발생하는군요..

예상은 했지만....알려주신방법을 한번 생각해봐야겠네요..

다시한번 감사드립니다..즐거운 하루 보내세요~

한상원(ennedi)님이 2011-08-17 11:33에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
38786쿼리문의(dummy table..) [5]
레이첼
2011-08-17
5002
38785escape 문자에 관련하여 질문하나만 드리겠습니다. [1]
조용호
2011-08-17
3661
38784마농님 튜닝 부탁드립니다. [4]
이강실
2011-08-16
4884
38783두개의 쿼리가 결과값이 다른데...같게 맞추고 싶은데~~ [5]
한상원
2011-08-16
3973
38782Hot백업복구시 redo로그파일이 없다면, 어디까지 복구가능한가? [1]
이태훈
2011-08-16
5821
38781imp 오류 [2]
초보
2011-08-16
6774
38780SQL튜닝 부탁드립니다. [2]
jinkuidong
2011-08-15
5914
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.016초, 이곳 서비스는
	PostgreSQL v16.4로 자료를 관리합니다