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

Генерирайте серии от месеци за всеки ред в Oracle

Това би трябвало да свърши работа (игнорирайте клаузата with; тя просто имитира вашата tst таблица, без да се налага физическо създаване на таблицата):

with tst as (select 1 id, to_date('2014-02-15','yyyy-mm-dd') st_date, to_date('2014-07-01','yyyy-mm-dd') en_date from dual union all
             select 2 id, to_date('2014-03-15','yyyy-mm-dd') st_date, to_date('2014-04-01','yyyy-mm-dd') en_date from dual)
select id, add_months(trunc(st_date, 'month'), level -1) mnth
from   tst
connect by level <= months_between(trunc(en_date, 'mm'), trunc(st_date, 'mm')) + 1
           and prior id = id
           and prior dbms_random.value is not null;

        ID MNTH      
---------- ----------
         1 2014-02-01
         1 2014-03-01
         1 2014-04-01
         1 2014-05-01
         1 2014-06-01
         1 2014-07-01
         2 2014-03-01
         2 2014-04-01



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Изберете множество идентификатори от последователност на PostgreSQL

  2. Вмъкнете, ако не съществува, иначе върнете идентификатора в postgresql

  3. Как да добавя колона, ако не съществува в PostgreSQL?

  4. Как мога да създам ограничение, за да проверя дали имейл е валиден в postgres?

  5. Как да направите ActiveRecord ThreadSafe