दो टेबल दिए:
CREATE TABLE foo (ts timestamp, foo text);
CREATE TABLE bar (ts timestamp, bar text);
मैं एक प्रश्न है कि के लिए रिटर्न मान लिखना चाहते हैं ts
, foo
और bar
है कि हाल ही में मूल्यों का एक एकीकृत दृश्य प्रतिनिधित्व करता है। दूसरे शब्दों में, यदि foo
निहित:
ts | foo
--------
1 | A
7 | B
और bar
निहित:
ts | bar
--------
3 | C
5 | D
9 | E
मुझे एक क्वेरी चाहिए जो वापस आए:
ts | foo | bar
--------------
1 | A | null
3 | A | C
5 | A | D
7 | B | D
9 | B | E
यदि दोनों तालिकाओं में एक ही समय में एक घटना होती है, तो आदेश कोई फर्क नहीं पड़ता।
मैं संघ सभी और डमी मूल्यों का उपयोग करके आवश्यक संरचना बनाने में सक्षम रहा हूं:
SELECT ts, foo, null as bar FROM foo
UNION ALL SELECT ts, null as foo, bar FROM bar
जो मुझे नए मूल्यों की एक रेखीय समयरेखा देगा, लेकिन मैं पिछली पंक्तियों के आधार पर शून्य मानों को कैसे पॉप्युलेट करता हूं, यह जानने में सक्षम नहीं हूं। मैंने lag
विंडो फ़ंक्शन की कोशिश की है, लेकिन AFAICT यह केवल पिछली पंक्ति को देखेगा, न कि पीछे की ओर। मैंने पुनरावर्ती CTEs को देखा है, लेकिन मुझे यकीन नहीं है कि प्रारंभ और समाप्ति की स्थिति कैसे सेट करें।
foo
औरbar
समय के साथ सख्ती से बढ़ रहे हैं या इस मामले में परीक्षण मामला भ्रामक है?