- Code: Select all
with t as (
select 1234 emp_number, to_date('11-DEC-09 10.50.41 PM', 'dd-MON-yy hh.mi.ss AM') TIME_IN_OUT, 'IN' SPECIFIER from dual union all
select 1234 emp_number, to_date('12-DEC-09 06.19.53 AM', 'dd-MON-yy hh.mi.ss AM') TIME_IN_OUT, 'OUT' SPECIFIER from dual union all
select 1234 emp_number, to_date('13-DEC-09 11.53.26 PM', 'dd-MON-yy hh.mi.ss AM') TIME_IN_OUT, 'IN' SPECIFIER from dual union all
select 1234 emp_number, to_date('14-DEC-09 05.09.36 AM', 'dd-MON-yy hh.mi.ss AM') TIME_IN_OUT, 'OUT' SPECIFIER from dual union all
select 1234 emp_number, to_date('11-DEC-09 10.50.41 AM', 'dd-MON-yy hh.mi.ss AM') TIME_IN_OUT, 'IN' SPECIFIER from dual union all
select 1234 emp_number, to_date('11-DEC-09 11.19.53 AM', 'dd-MON-yy hh.mi.ss AM') TIME_IN_OUT, 'OUT' SPECIFIER from dual
)
-- end of on-the-fly-test-data
SELECT emp_number,
DECODE(specifier, 'IN', TO_CHAR(time_in_out, 'dd-MON-yy hh.mi.ss AM'), 'NIL') AS TIME_IN,
DECODE(specifier, 'OUT', TO_CHAR(time_in_out, 'dd-MON-yy hh.mi.ss AM'), 'NIL') AS TIME_OUT
FROM t
if IN_TIME and OUT_TIME is on the same day, then time_in_out should display in same row, otherwise I would like to get the output like the following
- Code: Select all
EMP_NUMBER TIME_IN TIME_OUT
1234 11/Dec/09 10:50:41 PM NIL
1234 NIL 12/Dec/09 6:19:53 AM
1234 13/Dec/09 11:53:26 PM NIL
1234 NIL 14/Dec/09 5:09:36 AM