Oracle FAQ | Your Portal to the Oracle Knowledge Grid |
Home -> Community -> Usenet -> c.d.o.misc -> Is there a better way????
Is there a better way of doing the following query?
SELECT TESTASMAKE MAKE, MAX(total_cnt) Total, MAX(pass_cnt) Pass,
TO_CHAR(ROUND(((MAX(pass_cnt)/MAX(total_cnt))*100),3))||'%' Pass_Pct,
MAX(rej_cnt) Rejected,
TO_CHAR(ROUND(((MAX(rej_cnt)/MAX(total_cnt))*100),3))||'%' Rej_Pct,
MAX(Crt_Cnt) Corrected,
TO_CHAR(ROUND(((MAX(crt_cnt)/MAX(total_cnt))*100),3))||'%' Crtd_Pct,
MAX(Abrt_Cnt) Aborted,
TO_CHAR(ROUND(((MAX(abrt_cnt)/MAX(total_cnt))*100),3))||'%' Abort_Pct
FROM (SELECT TESTASMAKE, COUNT(overallpf) Total_Cnt, 0 Pass_Cnt, 0
Rej_Cnt, 0 Crt_Cnt, 0 Abrt_Cnt
FROM new_testrecord
GROUP BY TESTASMAKE
UNION
SELECT TESTASMAKE, 0 Total_Cnt, COUNT(overallpf) Pass_Cnt, 0 Rej_Cnt, 0
Crt_Cnt, 0 Abrt_Cnt
FROM new_testrecord
WHERE overallpf='1'
GROUP BY TESTASMAKE
UNION
SELECT TESTASMAKE, 0 Total_Cnt, 0 Pass_Cnt, COUNT(overallpf) Rej_Cnt, 0
Crt_Cnt, 0 Abrt_Cnt
FROM new_testrecord
WHERE overallpf='2'
GROUP BY TESTASMAKE
UNION
SELECT TESTASMAKE, 0 Total_Cnt, 0 Pass_Cnt, 0 Rej_Cnt, COUNT(overallpf)
Crt_Cnt, 0 Abrt_Cnt
FROM new_testrecord
WHERE overallpf='3'
GROUP BY TESTASMAKE
UNION
SELECT TESTASMAKE, 0 Total_Cnt, 0 Pass_Cnt, 0 Rej_Cnt, 0 Crt_Cnt,
COUNT(overallpf) Abrt_Cnt
FROM new_testrecord
WHERE overallpf='6'
GROUP BY TESTASMAKE)
GROUP BY TESTASMAKE
ORDER BY TESTASMAKE
Thanks in advance!!!!
Received on Thu Mar 02 2006 - 16:16:03 CST