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
운영게시판
최근게시물
CUBRID Q&A 117 게시물 읽기
No. 117
unisql에서 rownum을 이용해서 몇개의 데이터만 가져오기
작성자
unisql 새내기
작성일
2005-03-10 16:57
조회수
7,475

비슷한 질문이 있는거 같은데..이것두 같은 건가요?

테이블에서 컬럼을 중복없이 쿼리해서 최근 날짜 순으로 정렬한다음...맨위에 3개만 쿼리하고 싶어요...

 

예를 들면

select *
from (select receipt_name from order_master where user_id='ccc'order by order_ymd desc)
where rownum < 4

이런식으로 말이죠...근데...이건 쿼리 에러가 나더라구요...

웅...알고 계신분 좀 알려주세요...아공..정말..미치겠슴당...

 

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

이렇게 해보세요

select *
from (select receipt_name from order_master where user_id='ccc' order by order_ymd desc) as a(receipt_name)
where rownum < 4

 

윤용수(problue)님이 2005-03-11 10:44에 작성한 댓글입니다.

앙..넘넘 감사 합니다...에러가 안나고 결과가 잘 나오네요...정말정말 감사합니다...

근데 하나만 더 여쭤봐도 되나요?

여기서 서브쿼리 내에서 distinct를 이용해서 중복값을 제외하고 싶은데...쿼리해보니깐...똑같은 이름이 있어도 distinct가 안되고 원래 리스트에서 rownum 갯수만큼만 나오네요....제가 잘못 썼나요?

일케 쿼리 했거든요?

select *
from (select distinct receipt_name from order_master where user_id='ccc' order by order_ymd desc) as a(receipt_name)
where rownum < 4

 

uni 새내기님이 2005-03-11 13:53에 작성한 댓글입니다. Edit

select *
from (select receipt_name from order_master where user_id='ccc'

group by  receipt_name order by order_ymd desc) as a(receipt_name)
where rownum < 4

 

이렇게 하면 어떨까요??

윤용수(problue)님이 2005-03-14 10:16에 작성한 댓글입니다.

감사합니다...^^

근데...에러가 나네요...

 

sqlx> select * from (select receipt_name from order_master where user_id='ccc' group by  receipt_name order by order_ymd desc) as a(receipt_name) where rownum < 4
sqlx> ;xrun

In the command from line 1,

ERROR: order_master.order_ymd is not single valued. Attributes exposed in
aggregate queries must also appear in the group by clause.

음..정말 알수가 없네요...그리구요..서브쿼리 뒤에 as a(receipt_name) 를 안 주면 에러 나던데...왜 그런건가요? 꼭 알리아스를 줘야 되는건가요?

uni새내기님이 2005-03-14 11:16에 작성한 댓글입니다. Edit

이상하네요..

전 에러가 안나는데...

 

알리아스는 꼬~옥 줘야 합니다..

유니에스큐엘의 특성이라고 보시는게..

 

아~  글구

select receipt_name from order_master where user_id='ccc' group by  receipt_name order by order_ymd desc for orderby_num() < 4

이것두 되여.... ^^

 

윤용수(problue)님이 2005-03-14 11:58에 작성한 댓글입니다.

윤용수님 너무 감사합니다.^^

많은 도움이 됐습니다.

select receipt_name,max(order_ymd) from order_master where user_id='ccc' group by receipt_name order by 2 desc 

이렇게 하니까 됐구요...제가 바보같이 max(order_ymd) 로 쿼리하고 order by 를 order_ymd로만 해서 그랬답니다...

혹시 저 같은 분 또 계실까바 성공한 쿼리도 올립니다...

uni새내기님이 2005-03-14 14:50에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
120이것좀 고쳐주세요
박경
2005-04-20
6349
119c하고 esqlx 사용하는건데 질문입니다(timetable에관해서) [2]
박경
2005-04-20
7832
118unisql에서 상용 WAS로의 연결 [4]
totoro
2005-04-14
7386
117unisql에서 rownum을 이용해서 몇개의 데이터만 가져오기 [6]
unisql 새내기
2005-03-10
7475
116select 시 자동으로 번호 증가하기??? [1]
김태윤
2005-02-18
7192
115uniSQL을 Oralce로 마이그레이션하는 방법... [2]
복인근
2005-01-10
6999
114사용자 계정 추가는 ?? [1]
김태윤
2005-01-06
7356
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.019초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다