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
운영게시판
최근게시물
DB2 Q&A 1117 게시물 읽기
No. 1117
DB2로 쿼리 좀 바꿔주세요. rownum, order by
작성자
송유라(blue7738)
작성일
2006-09-29 21:22
조회수
10,434

오라클에서 이런 쿼리문을 사용하고 있는데요..


select *  from (select * from table_name order by investid )

where investid > 628 and rownum < 3 and d_sts in ('+', '=') AND GRADE <= '0' order by investid desc;


DB2로 DB가 바뀝니다. 그래서 DB2용으로 바꿔야 하는데


select * from (select * from table_name order by investid) a

where investid > 628 and d_sts in ('+', '=') AND GRADE <= '0' order by investid desc fetch first 2 rows only;


이렇게 바꿨더니 전혀 다른 결과가 나옵니다.


이유는 order by의 위치가 문제인데요..

오라클의 쿼리문은 이미 rownum이 먹은 상태에서 order by 가 들어간거구요, DB2의 쿼리문에서는 fetch first 2 rows only 문장 뒤에는 order by 가 들어가지 못해서 앞에다가 써줬더니 전체 결과가 달라진 겁니다.


제발 좀 같은 결과가 나올 수 있도록 도와주세요. ㅠㅠ

이 글에 대한 댓글이 총 2건 있습니다.
select * 
from (
select * 
from  investid
where investid > 628 
  and d_sts in ('+', '=') 
  AND GRADE <= '0' 
order by investid
fetch first 2 rows only) a
order by investid desc ;
도님이 2006-10-02 09:30에 작성한 댓글입니다. Edit

우와~ 너무 감사해요.

이걸 어떻게 해야하나 한참 고민했는데.. 저는 왜이리 단순할까요.. 이런걸 못바꾸고.. ㅠㅠ

일단 도님께서 바꿔주신대로 쿼리문을 돌려보니 결과가 나오기는 하는데요..

문제는 fetch first 2 rows only <== 이 문구의 숫자가 정해진 값이 아니라 가변값인지라 ?로 받아야 하거든요.. 그런데 이 문장 안에서는 ?가 먹지를 않네요. 이건 어떻게 해결해야 할까요.. ㅠㅠ

한번만 더 봐주세요.

송유라님이 2006-10-02 10:17에 작성한 댓글입니다.
이 댓글은 2006-10-02 13:19에 마지막으로 수정되었습니다. Edit
[Top]
No.
제목
작성자
작성일
조회
1120오라클에 있는 instr 과 같은 함수는.....? [1]
꼬마
2006-10-10
7036
1119type 1인덱스와 type 2 인덱스에 대해서 질문 [1]
db2man
2006-10-07
7204
1118select 문에 대해서 여쭤볼게 있습니다... [4]
db2
2006-10-02
7751
1117DB2로 쿼리 좀 바꿔주세요. rownum, order by [2]
송유라
2006-09-29
10434
1113간단한 쿼리문 질문드립니다. [2]
김영주
2006-09-25
8720
1111insert문에서 서브쿼리 사용 [1]
김영주
2006-09-22
8931
1110소문자로 보이는 스키마는 어떻게 생성을 합니까? [1]
db2
2006-09-22
7476
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.018초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다