Menampilkan rownum ganjil dan genap

Misalkan suatu aplikasi ingin menampilkan rownum ganjil dan genap, bagaimana caranya? [Dalam contoh ini saya menggunakan view dba_users sebagai object yang diquery].

Secara logika, untuk menampilkan rownum genap adalah berikut ini :
SQL> select rownum from dba_users
where rownum/2=trunc(rownum/2);

Dan berikut ini untuk menampilkan rownum ganjil:
SQL> select rownum from dba_users
where rownum/2<>trunc(rownum/2);

OO… ternyata hasilnya tidak muncul, padahal view tersebut mempunyai isi. Setelah dicoba-coba, ternyata operasi rownum yang diperbolehkan di clause where hanya operasi lebih dari, kurang dari, dan between.

Kalau begitu harus menggunakan sedikit trik. Lakukan query dalam query:

SQL> select a.numrow nogenap
from (select rownum as numrow from dba_users) a
where (a.numrow/2)=trunc(a.numrow/2);

OO… ternyata berhasil 🙂 Untuk menampilkan rownum ganjil di kolom 1 dan rownum genap di kolom 2, berikut ini query-nya:

SQL> select noganjil, nogenap
from
(select a.numrow nogenap from
(select rownum as numrow from dba_users) a
where (a.numrow/2)=trunc(a.numrow/2)) genap,
(select a.numrow noganjil from
(select rownum as numrow from dba_users) a
where (a.numrow/2)<>trunc(a.numrow/2)) ganjil
where nogenap (+)= (noganjil+1);

This entry was posted in SQL and PL/SQL and tagged , , , , , , , . Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *