Thursday, March 13, 2014

Using WITH, DECODE functions in sql

       
 WITH Q1 AS
(SELECT unique_id,status from table group by unique_id having count(unique_id)=1)

SELECT * FROM Q1
WHERE unique_id IN
            (SELECT unique_id FROM Q1 WHERE  status = 'Approve'
            AND EXISTS (SELECT 1 FROM Q1 subq1
                        WHERE Q1.emp_id = subq1.emp_id
                        AND TRUNC(Q1.status_date) < TRUNC(subq1.insert_date)) 
            )                 
ORDER BY Q1.unique_id,decode(status,'Approve',1),status_date;