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 40196 게시물 읽기
No. 40196
쿼리에서 없는 항목도 나와야 하는데..
작성자
한상원(ennedi)
작성일
2013-07-15 14:45
조회수
6,380

안녕하세요...오라클 8.1.7퍼스널버젼은 left outjoin 이 안되나요...토드에서 계속 에러가 나네요...

안되는게 맞나요..? 아님 아래 구문이 틀렸나요..?

SELECT *
FROM scbilltb  A
     left OUTER JOIN sccommtb B
        ON A.blpucd = B.CMSMCD
ORDER BY CMSMCD

--명령어가 올바르게 종료되지 않았습니다...

 

그래서 아래처럼 작성했는데..

SELECT CMSMCD, CMCDNM,                                                                  
SUM(DECODE(BLSETY,'1',BLOKAM, '-2', BLOKAM, '2', BLOKAM*-1)) AS TOT_AMT,  
        COUNT(*) TOT_CNT                                                                
  FROM SCBILLTB , SCCOMMTB                                                             
 WHERE BLSHCD = :P_BLSHCD                                                              
   AND BLSEDT BETWEEN :P_DATE_1 AND :P_DATE_2                                          
   AND BLBIKN = '02'                                                          
   AND CMSHCD = :P_BLSHCD                                                       
   AND CMLRCD = '07'                                                          
   AND CMMDCD = '15'                                                          
   AND CMSMCD = BLPUCD                                                          
 GROUP BY CMSMCD, CMCDNM

결과가

CMSMCD    CMCDNM    TOT_AMT    TOT_CNT
01                 비씨    208440    20
02                 국민    247200    21
03                 외환    71530    12
04                 삼성    64070    7
05                 엘지    37980    5
08                 다이너스    140500    10
09                 아멕스    115770    8
10                 신한    157680    12

이렇게 나왔는데...CMSMCD가 사실은 15, 130 도 있습니다...그러나 SCCOMMTB 테이블 CMSMCD필드에는15, 130이 없습니다.

결과가

08                 다이너스    140500    10
09                 아멕스    115770    8
10                 신한    157680    12

15                 해외    45,000  3

150              기타     155,000 15

이렇게 나오기면 되는데 잘 안되네요...어떻게 하면 저 2개가 나올까요..?

좋은하루 보내세요..

 

 

 

 

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

SELECT *
  FROM scbilltb  A
     , sccommtb B 
 WHERE A.blpucd = B.CMSMCD(+)
 ORDER BY B.CMSMCD
 
ANSI - SQL 은 9i 부터 되는걸로 알고 있고요. 
오라클은 (+) 붙여주시면 됩니다.
 
그리고 조인할때는 컬럼명에  alias 를 붙여서
어떤 테이블의 컬럼인지 구분을 해주시는게 좋습니다.
 
 
아린(arin76)님이 2013-07-15 16:14에 작성한 댓글입니다.
이 댓글은 2013-07-15 16:23에 마지막으로 수정되었습니다.

답변감사합니다....9i 이상이군요...

답변주신대로 테스트 해봐야겠습니다..

즐거운 하루보내세요

한상원(ennedi)님이 2013-07-15 17:13에 작성한 댓글입니다.

 다른 내용이긴 합니다만.. 쿼리 검증은 sqlplus에서 실행이 가장 좋은거 같습니다.

야간비행(야간비행)님이 2013-07-16 00:10에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
40199DB에서 결과가 되돌아 오지 않는 경우는? [1]
줄리아
2013-07-18
6074
40198full scan 이유를 알고 싶습니다.(between) [2]
초보디비
2013-07-17
7998
40197고정 ROW을 지정 할수있나요? [1]
이상덕
2013-07-17
6656
40196쿼리에서 없는 항목도 나와야 하는데.. [3]
한상원
2013-07-15
6380
40195[Jeus] 9i에서 11g로 업그레이드 하였는데요~
조기영
2013-07-15
5901
40194알티베이스 트리거 문법이 이상하네요. 좀 만 봐주세요.
김가은
2013-07-15
6122
40193알티베이스와 오라클 트리거 문법은 같은가요?
김아나
2013-07-13
5926
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.017초, 이곳 서비스는
	PostgreSQL v16.4로 자료를 관리합니다