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

पिछले महीने के मानों के साथ परिणाम में लापता महीना जोड़ें

आप इसे इस तरह एक पुनरावर्ती सीटीई के साथ प्राप्त कर सकते हैं:

with RECURSIVE ctetest as (SELECT * FROM (values ('2020-12-31'::date,'Alex',35,100,'A+'),
            ('2021-01-31'::date,'Alex',35,110,'A'),
            ('2021-05-31'::date,'Alex',35,999,'A+'),
            ('2021-06-30'::date,'Jhon',20,175,'B-'),
            ('2021-09-30'::date,'Jhon',20,200,'B+')) v (mth, emp, age, salary, rating)), 
cte AS (
    SELECT MIN(mth) AS mth, emp, age, salary, rating
    FROM ctetest
    GROUP BY emp, age, salary, rating
    UNION 
    SELECT COALESCE(n.mth, (l.mth + interval '1 day' + interval '1 month' - interval '1 day')::date), COALESCE(n.emp, l.emp), 
    COALESCE(n.age, l.age), COALESCE(n.salary, l.salary), COALESCE(n.rating, l.rating)
    FROM cte l
    LEFT OUTER JOIN ctetest n ON n.mth = (l.mth + interval '1 day' + interval '1 month' - interval '1 day')::date 
                                AND n.emp = l.emp
    WHERE (l.mth + interval '1 day' + interval '1 month' - interval '1 day')::date <= (SELECT MAX(mth) FROM ctetest)
)
SELECT * FROM cte order by 2, 1;

ध्यान दें कि हालांकि सीटीटेस्ट स्वयं recursive नहीं है , केवल परीक्षण डेटा प्राप्त करने के लिए उपयोग किया जा रहा है, यदि एकाधिक सीटीई के बीच कोई सीटीई recursive है , आपके पास with . के बाद पुनरावर्ती कीवर्ड होना चाहिए ।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. स्तंभ नाम और विशिष्ट मान लौटाएं

  2. PostgreSQL एक्सेंट + केस असंवेदनशील खोज

  3. पोस्टग्रेज क्वेरी प्लान क्यों पंक्ति अनुमान इतना गलत है

  4. PostgreSQL में संख्यात्मक स्वरूपण के लिए टेम्पलेट पैटर्न और संशोधक

  5. स्प्रिंग बूट, पोस्टग्रेएसक्यूएल और डॉकर - कंटेनर में चलने के दौरान कनेक्शन अस्वीकृत