PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

разделяне на редове в Redshift

Прав сте, Redshift в момента не поддържа generate_series. Един от начините да заобиколите това е да генерирате своя собствена серийна таблица и да се присъедините към нея. В моя пример по-долу току-що направих row_number() срещу таблицата pg_attribute, за да генерирам последователността. Можете да коригирате стойността TOP (v), за да коригирате сега много числа, които искате във вашата последователност, ако имате нужда от повече от това, което pg_attribute може да ви даде, опитайте кръстосано свързване на pg_attribute със себе си. Не твърдя, че това е най-добрият начин за генериране на таблица с последователности, можете да я генерирате както искате; моята основна мисъл е, че ще ви е необходим такъв, който да замести generate_series.

След като имате таблицата със серията си, това е просто обединяване, за да получите вашия резултат. Пълен пример:

-- 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. django postgresql json валидиране на схема на поле

  2. PostgreSQL + Rails citext

  3. Уникална стойност на PostgreSQL в множество колони

  4. Копирайте структурата на таблицата в нова таблица

  5. Как в Postgres ограничавате възможните стойности за определена колона?