TABLE JOIN [message #22952] |
Thu, 07 November 2002 07:31 |
John Smith
Messages: 25 Registered: February 2002
|
Junior Member |
|
|
Does anyone know a way to do this? I'm stumped. Also, I cannot use the term "LEFT OUTER JOIN" because the sql editor doesn't understand it. I have to use (+).
Thanks
Here's what my original Table myTable looks like. I'm interested in seeing Data for Projects uploaded on a certain date input by the user. For this example, lets say the date is 11/05/2002.
PROJECT_NUM UPLOAD_DATE STATUS
=========== =========== ======
1 11/05/2002 2:06:12 PM WARNING
1 11/05/2002 1:43:17 PM OK
1 11/05/2002 2:01:12 PM WARNING
1 11/02/2002 4:03:13 PM WARNING
1 11/05/2002 2:26:16 PM OK
1 11/03/2002 2:03:21 PM WARNING
2 11/03/2002 1:43:17 PM WARNING
2 11/02/2002 4:01:37 PM OK
2 11/05/2002 2:06:17 PM OK
2 11/05/2002 6:23:12 PM WARNING
2 11/05/2002 9:33:16 AM WARNING
2 11/05/2002 2:05:32 PM ERROR
3 11/05/2002 4:21:13 PM ERROR
Here's the desired output that I'd like my query to produce.
PROJECT_NUM UPLOAD_ STARTED TOTAL #WARN #ERR
=========== =============== ===== ===== =====
1 11/05/2002 1:43:17 PM 4 2 0
2 11/05/2002 9:33:16 AM 4 2 1
3 11/05/2002 4:21:13 PM 1 0 1
I started with the query below, but I don't think it's correct, plus I can't do LEFT OUTER JOIN
SELECT T1.PROJECT_NUMBER, MIN(T1.UPLOAD_DATE),
COUNT(*),
SUM(CASE WHEN T2.STATUS IS NOT NULL THEN 1 ELSE 0 END),
SUM(CASE WHEN T3.STATUS IS NOT NULL THEN 1 ELSE 0 END)
FROM myTable T1 LEFT OUTER JOIN myTable T2
ON T1.PROJECT_NUMBER = T2.PROJECT_NUMBER
AND T1.UPLOAD_DATE = T2.UPLOAD_DATE
AND T2.STATUS = 'WARNING'
LEFT OUTER JOIN myTable T3
ON T1.PROJECT_NUMBER = T3.PROJECT_NUMBER
AND T1.UPLOAD_DATE = T3.UPLOAD_DATE
AND T3.STATUS = 'ERROR'
GROUP BY T1.PROJECT_NUMBER
|
|
|
Re: TABLE JOIN [message #22954 is a reply to message #22952] |
Thu, 07 November 2002 08:21 |
F. Tollenaar
Messages: 64 Registered: November 2002
|
Member |
|
|
create table mytable(project_num number, upload_date date, status varchar2(10));
snipped inserts
SQL> select project_num
2 , to_char(min(upload_date), 'mm/dd/yyyy hh:mi:ss PM') upload_started
3 , count(*) total
4 , sum(decode(status, 'WARNING', 1, 0)) WARNINGS
5 , sum(decode(status, 'ERROR', 1, 0)) ERRORS
6 from mytable
7 where trunc(upload_date) = to_date('11/05/2002', 'mm/dd/yyyy')
8* group by project_num
SQL> /
PROJECT_NUM UPLOAD_STARTED TOTAL WARNINGS ERRORS
----------- ---------------------- ---------- ---------- ----------
1 11/05/2002 01:43:17 PM 4 2 0
2 11/05/2002 09:33:16 AM 4 2 1
3 11/05/2002 04:21:13 PM 1 0 1
HTH
Frank
|
|
|
|