Given that your grouping occurs in PROJECT_ID for INSERTION_DATE DESC and positive TAG_VALUE, I changed the analytic functions to achieve the result. This may not be a reliable solution, but it will certainly help you.
Data setting:
CREATE TABLE Table1 ("TAG_VALUE" varchar2(5), "TAG_DESC" varchar2(6), "INSERTION_DATE" varchar2(10), "PROJECT_ID" int) ; INSERT ALL INTO Table1 ("TAG_VALUE", "TAG_DESC", "INSERTION_DATE", "PROJECT_ID") VALUES (NULL, 'Equity', '14-DEC-14', 1) INTO Table1 ("TAG_VALUE", "TAG_DESC", "INSERTION_DATE", "PROJECT_ID") VALUES ('0', 'Equity', '14-DEC-14', 1) INTO Table1 ("TAG_VALUE", "TAG_DESC", "INSERTION_DATE", "PROJECT_ID") VALUES ('312', 'Equity', '14-DEC-14', 1) INTO Table1 ("TAG_VALUE", "TAG_DESC", "INSERTION_DATE", "PROJECT_ID") VALUES ('23343', 'Equity', '17-DEC-11', 5) INTO Table1 ("TAG_VALUE", "TAG_DESC", "INSERTION_DATE", "PROJECT_ID") VALUES ('1263', 'Equity', '16-DEC-11', 5) INTO Table1 ("TAG_VALUE", "TAG_DESC", "INSERTION_DATE", "PROJECT_ID") VALUES (NULL, 'Equity', '22-JรN-14', 2) INTO Table1 ("TAG_VALUE", "TAG_DESC", "INSERTION_DATE", "PROJECT_ID") VALUES (NULL, 'Equity', '11-JรN-14', 2) INTO Table1 ("TAG_VALUE", "TAG_DESC", "INSERTION_DATE", "PROJECT_ID") VALUES (NULL, 'Equity', '25-SEPT-13', 2) INTO Table1 ("TAG_VALUE", "TAG_DESC", "INSERTION_DATE", "PROJECT_ID") VALUES ('0', 'Equity', '20-SEPT-13', 2) INTO Table1 ("TAG_VALUE", "TAG_DESC", "INSERTION_DATE", "PROJECT_ID") VALUES ('1234', 'Equity', '19-SEPT-13', 2) INTO Table1 ("TAG_VALUE", "TAG_DESC", "INSERTION_DATE", "PROJECT_ID") VALUES ('13415', 'Equity', '18-SEPT-13', 2) INTO Table1 ("TAG_VALUE", "TAG_DESC", "INSERTION_DATE", "PROJECT_ID") VALUES ('99999', 'Equity', '16-OCT-10', 9) SELECT * FROM dual ;
Query:
SELECT tag_value, tag_desc, insertion_date, project_id FROM (SELECT tag_value, tag_desc, insertion_date, project_id, Last_value(Decode(tag_value, 0, NULL, tag_value) ignore nulls) over ( PARTITION BY project_id ORDER BY insertion_date ROWS BETWEEN unbounded preceding AND unbounded following ) new_tag_value FROM table1) WHERE tag_value = new_tag_value;
Result:
TAG_VALUE TAG_DESC INSERTION_DATE PROJECT_ID 312 Equity 14-DEC-14 1 1234 Equity 19-SEPT-13 2 23343 Equity 17-DEC-11 5 99999 Equity 16-OCT-10 9
Here is the fiddle