Anda benar, Redshift saat ini tidak mendukung generate_series. Salah satu cara untuk menyiasatinya adalah dengan membuat tabel seri Anda sendiri dan bergabung dengannya. Dalam contoh saya di bawah ini, saya baru saja melakukan row_number() terhadap tabel pg_attribute untuk menghasilkan urutan. Anda dapat menyesuaikan nilai TOP (v) untuk menyesuaikan sekarang banyak angka yang Anda inginkan dalam urutan Anda, jika Anda membutuhkan lebih dari apa yang dapat diberikan pg_attribute kepada Anda, coba gabungkan pg_attribute dengan dirinya sendiri. Saya tidak mengklaim ini sebagai cara terbaik untuk menghasilkan tabel urutan, Anda dapat membuatnya dengan cara apa pun yang Anda inginkan; poin utama saya adalah Anda memerlukannya untuk menggantikan generate_series.
Setelah Anda memiliki tabel seri Anda, maka bergabunglah dengan mudah untuk mendapatkan hasil Anda. Contoh Lengkap:
-- Setup Example
CREATE TABLE test
(
col1 char(2),
col2 char(2),
col3 char(2),
col4 integer
);
INSERT INTO test(col1, col2, col3, col4)
VALUES
('A1', 'A2', 'A3', 4),
('B1', 'B2', 'B3', 3),
('C1', 'C2', 'C3', 1);
-- Generate 10 sequence numbers to table. Adjust as needed or roll your own
SELECT TOP 10 ROW_NUMBER() OVER (PARTITION BY attnum ORDER BY attnum) n
INTO sequence
FROM pg_catalog.pg_attribute;
-- Example Query
SELECT col1, col2, col3, s.n
FROM test t
INNER JOIN sequence s ON s.n <= t.col4
ORDER BY col1, col2, col3, s.n;
-- Clean up
DROP TABLE sequence;
DROP TABLE test;