bagaimana cara membuat angka tambahan dalam kueri sql oracle tanpa membuat tabel? Saya telah mencoba menggunakan klausa "dengan", tetapi saya gagal mendapatkan hasil yang diharapkan. Saya menggunakan oracle 10g
di sini adalah kode yang saya coba, sepertinya tidak berfungsi:
WITH
TABLE3 AS ( SELECT 2008 YEARS FROM dual WHERE 1=1
union all
select t3.YEARS+1 from TABLE3 t3
WHERE 1=1 AND t3.YEARS < 2011
)
select YEARS from TABLE3
hasil yang saya inginkan adalah:
2008
2009
2010
2011
oracle-10g
50LV3R
sumber
sumber
Saya pikir ini akan berhasil (berdasarkan halaman ini ( http://psoug.org/definition/LEVEL.htm ) sebagai titik awal):
Ini akan kembali:
Sesuaikan 2008 dan 4 untuk mendapatkan hasil yang berbeda.
sumber
Sepertinya OP berusaha memecahkan masalah menggunakan subquery rekursif. Ini tidak akan berfungsi dalam 10g karena fungsi itu tidak ditambahkan hingga 11.2, tetapi dalam 11.2+ berikut ini juga akan menjadi solusi yang valid untuk masalah tersebut.
Satu-satunya hal yang hilang dari permintaan OP adalah
(YEARS)
.sumber
WITH T3(Years) AS ( SELECT 2008 Years UNION ALL SELECT Years + 1 FROM T3 WHERE Years < 2011 ) SELECT * FROM T3;
FROM dual
.dual
adalah tabel khusus oracle. Database lain seperti MS SQL Sever, mysql, postgres memungkinkan pernyataan sepertiselect expression
. mysql juga tahu meja gandaMengapa tidak membuat urutan saja?
EDIT:
Untuk rentang kecil dari nilai urutan Anda dapat menggunakan sesuatu seperti ini:
Anda hanya perlu tabel dengan jumlah baris yang cukup.
sumber
Berikut adalah contoh menambahkan beberapa flag dan incrementing yang berdasarkan pada pernyataan kasus.
- Hasil yang ditetapkan di bawah ini
sumber
Tingkatkan hanya satu dengan rownum pilih rownum + 100 dari urutan "tabel" sebanyak 1;
Hasil itu dengan 101, 102 dll.
sumber