Skip to Main Content

DevOps, CI/CD and Automation

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

How can i show Dates which not i insert into Table?

Poor-BoySep 9 2016 — edited Sep 12 2016

II create this report .... the result is fine i just want to show the dates which have no records... this query Not showin apsent persons...

SELECT DISTINCT

   b.emp\_name,

   b.department\_name,

   b.emp\_no,

   b.date\_worked,

   b.in\_out\_flag,

   MIN(TO\_CHAR (b.time\_in,  'HH:MI:SS AM')) OVER (PARTITION BY b.emp\_no, b.date\_worked) time\_in,

   MAX(TO\_CHAR (b.time\_out, 'HH:MI:SS AM')) OVER (PARTITION BY b.emp\_no, b.date\_worked) time\_out,

  (SUM (b.time\_worked) OVER (PARTITION BY b.emp\_no, b.date\_worked)) \* 24 hours\_worked,

   CASE WHEN (SUM (b.time\_worked) OVER (PARTITION BY b.emp\_no, b.date\_worked)) \* 24 = 0 THEN 

   'Absent' 

 WHEN (SUM (b.time\_worked) OVER (PARTITION BY b.emp\_no, b.date\_worked)) \* 24 \< 8 THEN 

    'Half\_Leave' 

 ELSE 'Present' 

END alias_name

FROM (SELECT a.emp_name,

          a.department\_name,

          a.in\_out\_flag,

          a.emp\_no,

          LEAD(a.time\_stamp, 0) OVER (PARTITION BY a.emp\_no, TRUNC(a.time\_stamp, 'DD') ORDER BY a.emp\_no, a.time\_stamp) time\_in,

          LEAD(a.time\_stamp, 1) OVER (PARTITION BY a.emp\_no, TRUNC(a.time\_stamp, 'DD') ORDER BY a.emp\_no, a.time\_stamp) time\_out,

         (LEAD(a.time\_stamp, 1) OVER (PARTITION BY a.emp\_no, TRUNC(a.time\_stamp, 'DD') ORDER BY a.emp\_no, a.time\_stamp)

        - LEAD(a.time\_stamp, 0) OVER (PARTITION BY a.emp\_no, TRUNC(a.time\_stamp, 'DD') ORDER BY a.emp\_no, a.time\_stamp)) time\_worked,

          a.date\_worked

   FROM  (SELECT emp\_name,

                 department\_name,

                 emp\_no,

                 TO\_DATE(TO\_CHAR(time\_stamp, 'DD-MON-YYYY HH24:MI'), 'DD-MON-YYYY HH24:MI') time\_stamp,

                 in\_out\_flag,

                 TRUNC(time\_stamp)                                                          date\_worked

          FROM   emp22) a

  ) b

WHERE b.in_out_flag = 'IN'

AND b.date_worked BETWEEN TO_DATE('01-MAY-2010', 'DD-MON-YYYY') AND

                         TO\_DATE('31-MAY-2010 23:59:59', 'DD-MON-YYYY HH24:MI:SS')  

Result of this query is

pastedImage_1.png

I want to show Apsents if a person have no record in Table .... Check last_Line of My query ....

30 days of employees should be apsent...

This post has been answered by Kalpataru on Sep 9 2016
Jump to Answer
Comments
Locked Post
New comments cannot be posted to this locked post.
Post Details
Locked on Oct 7 2016
Added on Sep 9 2016
3 comments
203 views