ROWNUM & DUAL
Bir forumda şöyle bir soru sulmuştu. 2 tarih arasındaki tarihlerin listesini nasıl alabilirim. Önce WHERE ifadesine koyacaksa neden istiyor, BETWEEN kullansın dedim ama yazışmamalar devam ettikçe şunu gördüm ki test datası oluşturmak içinmiş. Mesela 2/12/2006 ile 5/12/2006 arasındaki günleri istediğimde sonuç olarakşunu bekliyordu.
2/12/2006
3/12/2006
4/12/2006
5/12/2006
Aklıma bir önceki yazımda ki CONNECT BY ifadesini kullanamak geldi desem yalan olur
SELECT ROWNUM FROM DUAL CONNECT BY ROWNUM<5;
Başka bir üye de yukarıdaki SQL in sonuçlarından yola çıkarak aşağıdaki SQL ile gayet güzel çözüm üretti :
SELECT (date ‘2006-12-02′) + ROWNUM - 1
FROM dual
CONNECT BY ROWNUM <= ((date ‘2006-12-05′) - (date ‘2006-12-03′) + 1)
Tamam! Adamı kutlamak lazım. Test datası oluşturmak için güzel bir yöntem. Ama aklıma bir soru takıldı :
DUAL tablosunda kaç tane kayıt var ???
Bu ünlü tablonun içeriğine baktım :
SELECT * FROM dual;
DUMMY
—–
X
SELECT ROWNUM FROM dual;
ROWNUM
——
1
Kayıtları çoklayalım
SELECT ROWNUM FROM DUAL CONNECT BY ROWNUM<5;
ROWNUM
———-
1
2
3
4
5
Eee! Sadece 1 kayıt vardı. Åžimdide maksimum ROWNUM‘ ı soralım.
SELECT MAX(ROWNUM) FROM dual CONNECT BY ROWNUM <5;
MAX(ROWNUM)
———–
5
Umarım olay anlaşılmıştır….
İyi Çalışmalar…










