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

यदि अनुपलब्ध हो तो PostgreSQL पिछली पंक्ति से मान का उपयोग करता है

आप एक सेल्फ जॉइन और विंडोज़ फंक्शन को मिक्स कर सकते हैं

सरलीकरण मैं इस तालिका को इस नमूना मान के साथ लेता हूं:

create table t ( a int, b int);    
insert into t values 
( 1, 1),
( 2, Null),
( 3, Null),
( 4, 2 ),
( 5, Null),
( 6, Null);

आपकी क्वेरी में a है trunc_u और b क्या आपका id है .प्रश्न है:

with cte as (    
    select 
      t1.a, 
      coalesce( t1.b, t2.b, 0) as b,
      rank() OVER 
       (PARTITION BY t1.a ORDER BY t2.a DESC) as pos
    from t t1 
    left outer join t t2
      on t2.b is not null and
         t2.a < t1.a    
)
select a, b
from cte
where pos = 1;

और परिणाम:

| A | B |
---------
| 1 | 1 |
| 2 | 1 |
| 3 | 1 |
| 4 | 2 |
| 5 | 2 |
| 6 | 2 |


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ClusterControl CLI से अपने PostgreSQL डेटाबेस को कैसे प्रबंधित करें?

  2. मैक + वर्चुअलएन्व + पीआईपी + पोस्टग्रेस्क्ल =त्रुटि:pg_config निष्पादन योग्य नहीं मिला

  3. समय क्षेत्र के बिना स्ट्रिंग को टाइमस्टैम्प में कैसे बदलें

  4. डोकर-लिखें द्वारा पोस्टग्रेज करने के लिए Django कनेक्शन

  5. PostgreSQL के लिए प्रतिकृति टोपोलॉजी परिवर्तन करना