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 21889 게시물 읽기
No. 21889
쿼리 질문입니다.
작성자
손님
작성일
2005-03-03 11:17ⓒ
2005-03-03 11:17ⓜ
조회수
1,435

id를 group으로 묶어서 level이 최대인 값만 가져오려는 쿼리인데요.

 

select substr(id,1,29) id,
to_char(max(to_number(decode(level,'PassData','1','1R','2')))) level
from test

group by substr(id,1,29)
order by substr(id,1,29)

 

위의 쿼리를 날렸을때는 총 row = 9894인데요.

 

select id, level,date
from test

where (id, level) in
(select substr(id,1,29) id,
to_char(max(to_number(decode(level,'PassData','1','1R','2')))) level
from test

group by substr(id,1,29))
order by substr(id,1,29)

 

이렇게 쿼리를 날리면 row=0 값이 나옵니다.

어디서 문제가 생긴건지..

 

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

 

where (id, level) in
(select substr(id,1,29) id,
to_char(max(to_number(decode(level,'PassData','1','1R','2')))) level

 

-->

where (substr(id,1,29), level) in
(select substr(id,1,29) id,
to_char(max(to_number(decode(level,'PassData','1','1R','2')))) level

 

묵찌빠님이 2005-03-03 11:45에 작성한 댓글입니다. Edit

그래도 o row 인데요^^;

손님님이 2005-03-03 12:03에 작성한 댓글입니다. Edit

 

메인쿼리의 id값이랑 서브쿼리에서 가공한 id값의 길이가 같은가요?

저는 이것이 의문시 됩니다.

지현철(jhc6703)님이 2005-03-03 13:27에 작성한 댓글입니다.

혹시 몰라서

메인 쿼리와, 서브쿼리의 길이를 id를 똑같은 조건으로 해보았습니다.

그래도 row=0

 

select substr(id,1,29), level,date
from test

where (substr(id,1,29), level) in
(select substr(id,1,29) ,
to_char(max(to_number(decode(level,'PassData','1','1R','2')))) level
from test

group by substr(id,1,29))
order by substr(id,1,29)

 

손님님이 2005-03-03 13:31에 작성한 댓글입니다. Edit

 

level구분이 PassData,1R 이렇게 두가지 뿐인가요?
지현철(jhc6703)님이 2005-03-03 13:44에 작성한 댓글입니다.

손님님이 2005-03-03 13:57에 작성한 댓글입니다. Edit

켁 당연히 나올수가 없는거 아닌가요?

 

원 test 테이블엔 level 구분이

 

PassData 와 1R 밖에 없는데

 

decode 로 변경시킨건 1과 2잖아요..

 

그러니 in 조건에 맞는게 없을텐데... 쩝... 제가 잘못파악하고 있는건지..

 

 

select substr(id,1,29), level,date
from test

where (substr(id,1,29), level) in  <--- 이부분을
(select substr(id,1,29) ,
to_char(max(to_number(decode(level,'PassData','1','1R','2')))) level
from test

group by substr(id,1,29))
order by substr(id,1,29)

 

 

where (substr(id,1,29),to_char(to_number(decode(level,'PassData','1','1R','2')))) in 

 

요렇게 바꿔보시죠

 

ㅠ.ㅠ님이 2005-03-03 14:10에 작성한 댓글입니다.
이 댓글은 2005-03-03 15:51에 마지막으로 수정되었습니다. Edit

 

level값의 최대값이 1R라면

select substr(id,1,29) as id,

          max(decode(level,'1R','2')) as level,

          date

 from test

where level = '1R'

group by substr(id,1,29)

이렇게 하면 되지 않나요?

지현철(jhc6703)님이 2005-03-03 14:39에 작성한 댓글입니다.

아래와 같이 한번 해보시져...

 

select id,
       decode(level,'PassData','1','1R','2') as level,
       date
  from test
 where (id, decode(level,'PassData','1','1R','2')) in
       (select substr(id,1,29) as id,
               to_char(max(to_number(decode(level,'PassData','1','1R','2')))) as level
          from test
         group by substr(id,1,29))
 order by substr(id,1,29)

 

김권유(eros)님이 2005-03-03 15:25에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
21892고수님들 부탁 드립니다. tablespace 사이즈가 갑자기 증가 했네요? [2]
임은식
2005-03-03
3114
21891한글이 [¡¾??¡Æ] [¡Æ?ª??] 이렇게 깨짐니다. [1]
김정우
2005-03-03
3461
21890하위 조직 정렬? [3]
처버
2005-03-03
1386
21889쿼리 질문입니다. [9]
손님
2005-03-03
1435
21888[질문]복잡한 문자열 비교, 부분 문자열 얻기 [1]
최민
2005-03-03
3219
21887테이블스페이스 생성과 유저 생성에 관해서 [2]
재키
2005-03-03
2817
21886CHAR 문제 ? [1]
최영준
2005-03-03
1033
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.017초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다