PostgreSQL
 sql >> डेटाबेस >  >> RDS >> PostgreSQL

तारीखों के आधार पर एक ही पंक्ति से कई पंक्तियाँ बनाना

हम यहां एक कैलेंडर तालिका का उपयोग करने का प्रयास कर सकते हैं, जिसमें महीने की सभी संभावित शुरुआत शामिल हैं जो अपेक्षित आउटपुट में दिखाई दे सकती हैं:

with calendar as (
    select '2017-09-01'::date as dt union all
    select '2017-10-01'::date union all
    select '2017-11-01'::date union all
    select '2017-12-01'::date union all
    select '2018-01-01'::date union all
    select '2018-02-01'::date union all
    select '2018-03-01'::date union all
    select '2018-04-01'::date union all
    select '2018-05-01'::date union all
    select '2018-06-01'::date union all
    select '2018-07-01'::date union all
    select '2018-08-01'::date
)

select
    t.id as subscription_id,
    c.dt,
    t.amount_monthly
from calendar c
inner join your_table t
    on c.dt >= t.start_date and
       c.dt < t.start_date + (t.month_count::text || ' month')::interval
order by
    t.id,
    c.dt;

डेमो



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. हाइबरनेट। PSQLException:प्रकार int के लिए खराब मान:व्यवस्थापक

  2. किसी फ़ंक्शन से कोई क्वेरी लौटाएं?

  3. mySQL से array_agg () को group_concat () की तरह कैसे काम करें?

  4. स्ट्रिंग सॉर्ट ऑर्डर (LC_COLLATE और LC_CTYPE)

  5. रूबी ऑन रेल्स:मैं postgresql के लिए database.yml को कैसे संपादित कर सकता हूं?