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

postgresql:घटना में समय अवधि को विभाजित करना

आप UNION कर सकते हैं बजाय। इस तरह आप अनावश्यक पंक्तियाँ उत्पन्न नहीं करते हैं

SELECT country, start_date, 
       CASE WHEN event_date BETWEEN start_date AND end_date 
            THEN event_date - 1 
            ELSE end_date
       END AS end_date, event_date
  FROM table1
 UNION ALL
SELECT country, event_date, end_date, event_date
  FROM table1
 WHERE event_date BETWEEN start_date AND end_date
 ORDER BY country, start_date, end_date, event_date

यह रहा एक SQLFiddle डेमो

आउटपुट:

| country | start_date |   end_date | event_date |
|---------|------------|------------|------------|
|       A | 1960-01-01 | 1994-07-19 | 1994-07-20 |
|       A | 1994-07-20 | 1999-12-31 | 1994-07-20 |
|       B | 1926-01-01 | 1995-12-31 |     (null) |



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. R . के साथ PostgreSQL में बड़े data.frame को सहेजना

  2. एकाधिक एक ही तालिका में शामिल होते हैं

  3. Django/PostgreSQL (भारतीय मानक समय) में कस्टम टाइमज़ोन सेट करें

  4. एसक्यूएल में एक छद्म लिंक्ड सूची बनाना

  5. एक्टो बिल्ड मल्टीपल एसोच