PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

membelah baris di Redshift

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;



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Saat Sisipkan:skor referensi kolom ambigu

  2. Duplikat Baris dalam Tabel kunci utama.

  3. Jatuhkan database yang sedang diakses oleh pengguna lain?

  4. Docker tidak mengenali direktori data Postgresql

  5. Django tidak dapat terhubung ke RDS postgresql