Home » SQL & PL/SQL » SQL & PL/SQL » TABLE JOIN
TABLE JOIN [message #22952] Thu, 07 November 2002 07:31 Go to next message
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 Go to previous messageGo to next message
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
Re: TABLE JOIN [message #22958 is a reply to message #22954] Thu, 07 November 2002 08:44 Go to previous message
John Smith
Messages: 25
Registered: February 2002
Junior Member
Worked like a charm! Thanks a million!
Previous Topic: Is Analyze table is mandatory?
Next Topic: Urgent: LOOP
Goto Forum:
  


Current Time: Mon Apr 29 08:10:20 CDT 2024