Ids of unique error type [message #650200] |
Tue, 19 April 2016 06:54 |
pointers
Messages: 451 Registered: May 2008
|
Senior Member |
|
|
Hi,
CREATE TABLE err_log (id NUMBER, err_typ VARCHAR2(2))
/
BEGIN
INSERT INTO err_log values (1, 'E');
--
INSERT INTO err_log values (2, 'E');
INSERT INTO err_log values (2, 'F');
INSERT INTO err_log values (2, 'E');
INSERT INTO err_log values (2, 'F');
--
INSERT INTO err_log values (3, 'E');
INSERT INTO err_log values (3, 'F');
--
INSERT INTO err_log values (4, 'E');
INSERT INTO err_log values (4, 'E');
--
INSERT INTO err_log values (5, 'F');
INSERT INTO err_log values (5, 'F');
--
INSERT INTO err_log values (6, 'E');
END;
/
I would like to get all the IDs along with err_typ where Ids having only err_typ=E but not F
From the above data, IDs 1,4 and 6 are having err_typ=E.
Output:
ID ERR_TYP
1 E
4 E
4 E
6 E
I wrote the following query, could you please show better ways of doing it. I am accessing err_log twice here.
SELECT b.ID, b.err_typ
FROM (SELECT ID, COUNT (DISTINCT err_typ) cnt
FROM err_log
GROUP BY ID
HAVING COUNT (DISTINCT err_typ) = 1) a,
err_log b
WHERE a.ID = b.ID AND b.err_typ = 'E'
ORDER BY 1
Thank you in advance.
Regards,
Pointers
|
|
|
|
|
|
Re: Ids of unique error type [message #650214 is a reply to message #650206] |
Tue, 19 April 2016 12:58 |
Bill B
Messages: 1971 Registered: December 2004
|
Senior Member |
|
|
You can also do the following
select a.id,a.err_type
from err_log a
where a.err_type = 'E'
and not exists
(select null
from err_log b
where b.id = a.id
and b.err_type = 'F');
or
|
|
|
|
|
|