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 |
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 ;