I want to select count of distinct requests for different statuses on different days like today, yesterday and day-before-yesterday from sample table, please guide me in this regard. Currently using following query where i get daily count.
columns: req_Status, req_id,sent_date
select req_status, count(distinct(req_id)) as REQ_TODAY, MIN(to_char(SENT_DATE,'DD-MON-YY - HH:MI:SS')) as Min_sent_date,
MAX(to_char(SENT_DATE,'DD-MON-YY - HH:MI:SS')) as Max_sent_date,'1-NEW Command' Meaning_of_Status from sample
where sent_date like sysdate
and req_status=1 group by req_status
union
select req_status, count(distinct(req_id)) as REQ_TODAY, MIN(to_char(SENT_DATE,'DD-MON-YY - HH:MI:SS')) as Min_sent_date,
MAX(to_char(SENT_DATE,'DD-MON-YY - HH:MI:SS')) as Max_sent_date,'2-old Command' Meaning_of_Status from sample
where sent_date like sysdate
and req_status=2 group by req_status
union
.
.
and so on... column req_status has values in range from 1 to 12
You do not have anything in WHERE clause to indicate that you are selecting records for one day.
You can use nested select statement for each day e.g.
select req_status,
(select count(*) from sample where req_status=1 and TRUNC(SENT_DATE)=TRUNC(sysdate)),
count(distinct(req_id)) as REQ_TODAY, MIN(to_char(SENT_DATE,'DD-MON-YY - HH:MI:SS')) as Min_sent_date,
MAX(to_char(SENT_DATE,'DD-MON-YY - HH:MI:SS')) as Max_sent_date,'1-NEW Command' Meaning_of_Status from sample
where sent_date like sysdate
and req_status=1 group by req_status
Bookmarks