최초 2개 데이터와 최종 2개 데이터 표출 1 4 962

by 오라크으을럽 [Oracle 기초] 오라클 쿼리 [2023.05.25 14:01:03]


create table a_vin (f1 varchar2(4) ); 

f1 컬럼 값에 0001, 0002, 0003 ... 1000 이라는 데이터가 있다고 가정할 때

최초2, 최종2 개의 데이터만 표출하려고 합니다.

   SELECT *
     FROM (SELECT *
             FROM (SELECT F1
                     FROM A_VIN
                    ORDER BY F1)
            WHERE ROWNUM <= 2
           UNION ALL
           SELECT *
             FROM (SELECT F1
                     FROM A_VIN
                    ORDER BY F1 DESC)
            WHERE ROWNUM <= 2)
    ORDER BY F1;

이런식으로 쿼리를 짜서 결과값을 아래와 같이 표기했는데 

F1
001
002
009
010

 

아래와 같이 나오기를 원하는데 어떤식으로 짜야할 지 문의드립니다.

최초2개, 최종2개 값은 고정입니다.

F1 F2
001 009
002 010
   
   

 

by 마농 [2023.05.25 14:56:18]
WITH a_vin AS
(
SELECT '001' f1 FROM dual
UNION ALL SELECT '002' FROM dual
UNION ALL SELECT '003' FROM dual
UNION ALL SELECT '009' FROM dual
UNION ALL SELECT '010' FROM dual
)
SELECT a.f1
     , b.f2
  FROM (SELECT ROWNUM rn
             , f1
          FROM (SELECT f1 FROM a_vin ORDER BY f1)
         WHERE ROWNUM <= 2
        ) a
      , (SELECT ROWNUM rn
              , f1 f2
          FROM (SELECT f1 FROM a_vin ORDER BY f1 DESC)
         WHERE ROWNUM <= 2
        ) b
 WHERE a.rn != b.rn
 ORDER BY a.rn
;

 


by 동동동 [2023.05.25 15:52:54]

와우...감탄이 절로 나오네요..^^


by 오라크으을럽 [2023.05.25 15:59:54]

감사합니다. 

where 절은 오타인 듯 하네요 a.rn = b.rn 


by 마농 [2023.05.25 16:15:45]

오타 아닙니다.
부정비교 (!=) 맞습니다.
1 은 2 와 연결, 2 는 1 과 연결

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