तालिका और नमूना तिथि बनाएं
SQL> create table observation(
2 item_id number,
3 dt date,
4 val1 number,
5 val2 number );
Table created.
SQL> insert into observation values( 1, date '2011-12-01', 1, null );
1 row created.
SQL> insert into observation values( 1, date '2011-12-02', null, 2 );
1 row created.
SQL> insert into observation values( 1, date '2011-12-03', 3, null );
1 row created.
SQL> insert into observation values( 2, date '2011-12-01', 4, null );
1 row created.
SQL> insert into observation values( 2, date '2011-12-02', 5, 6 );
1 row created.
और फिर KEEP
. का उपयोग करें MAX
. पर क्लॉज ORDER BY
. के साथ समग्र फ़ंक्शन जो पंक्तियों को अंत में NULL टिप्पणियों के साथ रखता है। ORDER BY
. में आप जिस भी तारीख का उपयोग करते हैं तालिका में जल्द से जल्द वास्तविक अवलोकन से पहले होना चाहिए।
SQL> ed
Wrote file afiedt.buf
1 select item_id,
2 max(val1) keep( dense_rank last
3 order by (case when val1 is not null
4 then dt
5 else date '1900-01-01'
6 end) ) val1,
7 max(val2) keep( dense_rank last
8 order by (case when val2 is not null
9 then dt
10 else date '1900-01-01'
11 end) ) val2
12 from observation
13* group by item_id
SQL> /
ITEM_ID VAL1 VAL2
---------- ---------- ----------
1 3 2
2 5 6
मुझे संदेह है कि CASE
. जोड़ने की तुलना में NULL मानों को अनदेखा करने के लिए एक और अधिक सुरुचिपूर्ण समाधान है ORDER BY
. को कथन लेकिन CASE
काम हो जाता है।