oracle 쿼리 문의드립니다.~!!!!(추가질문있습니다~!) 0 3 3,380

by alan [SQL Query] oracle [2016.08.06 12:44:01]


안녕하세요 초보개발자입니다~ 질문있어 쿼리 문의드립니다.

아래와 같이 data가 있는데

table a에서 각seq별로 data를 2개씩만뽑을려면 쿼리를 어떻게 써야하나요?

고수님들 알려주시면 감사하겠습니다.(_ _)

기대결과

seq  val

001 38

001 20

002 80

002 17

 

table a

seq  val

001 38

001 20

001 61

001 94

002 80

002 17

002 39

002 82

002 68

by jkson [2016.08.06 14:56:12]
with t as
(
select '001' seq, '38' val from dual union all
select '001' seq, '20' val from dual union all
select '001' seq, '61' val from dual union all
select '001' seq, '94' val from dual union all
select '002' seq, '80' val from dual union all
select '002' seq, '17' val from dual union all
select '002' seq, '39' val from dual union all
select '002' seq, '82' val from dual union all
select '002' seq, '68' val from dual
)
select seq, val 
  from
    (  
    select row_number() over(partition by seq order by rownum) rn
         , seq, val
      from t
    )
 where rn <= 2  

2개씩 뽑는 기준은 따로 없는 건가요? 뭐.. val 크기순으로 2개라든지..


by alan [2016.08.06 15:52:37]

감사합니다. jkson님~!! 덕분에 해결하였습니다. ㅎㅎ


by alan [2016.08.06 16:13:33]

@추가질문

답변감사드립니다. 

혹시 rn <=6 를 하면

val값만 0으로 setting하게 쿼리가 가능할까요??

기대결과값

seq  val

001 38

001 20

001 61

001 94

001  0

001  0

002 80

002 17

002 39

002 82

002 68

002 0

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입