All -

I have the following query:

SELECT
OUTER.ACTIVITY_DATE, OUTER.ACTIVITY_TIME, OUTER.CALLINGNUMBER,
OUTER.CALLEDNUMBER, OUTER.AMT, OUTER.QTY, OUTER.LOCALITY_NAME,
OUTER.LOCALITY_STATE
FROM
(SELECT DISTINCT
ROWNUM AS QUERY_ROWNUM, INNER.ACTIVITY_DATE, INNER.ACTIVITY_TIME,
INNER.CALLINGNUMBER, INNER.CALLEDNUMBER, INNER.QTY, INNER.AMT,
DECODE ( LOCALITY_NAME, NULL, 'N/A', LOCALITY_NAME ) AS LOCALITY_NAME,
DECODE ( LOCALITY_STATE, NULL, 'N/A', LOCALITY_STATE) AS LOCALITY_STATE
FROM
(
SELECT
ACTIVITY_DATE, ACTIVITY_TIME,
DECODE ( CALLING_NUMBER, NULL, 'N/A', CALLING_NUMBER ) AS CALLINGNUMBER,
DECODE ( CALLED_NUMBER, NULL, 'N/A', CALLED_NUMBER ) AS CALLEDNUMBER, QTY, AMT,
DECODE ( CALLED_NUMBER, NULL, 'N/A', SUBSTR ( CALLED_NUMBER, 1, 3 ) ) AS NPA,
DECODE ( CALLED_NUMBER, NULL, 'N/A', SUBSTR ( CALLED_NUMBER, 4, 3 ) ) AS NXX
FROM MEASUREMENT_DATA
WHERE
(
USAGE_STATUS_CD is null
OR USAGE_STATUS_CD <> 'BILLED'
)
AND TRIM ( CALL_TYPE ) = 'O'
AND ACCOUNT_PRODUCT_ID = ?
UNION
SELECT
ACTIVITY_DATE, ACTIVITY_TIME,
DECODE(CALLING_NUMBER,NULL,'N/A',CALLING_NUMBER) AS CALLINGNUMBER,
DECODE(CALLED_NUMBER,NULL,'N/A',CALLED_NUMBER) AS CALLEDNUMBER,QTY,AMT,
DECODE(CALLING_NUMBER,NULL,'N/A',SUBSTR(CALLING_NUMBER,1,3)) AS NPA,
DECODE(CALLING_NUMBER,NULL,'N/A',SUBSTR(CALLING_NUMBER,4,3)) AS NXX
FROM MEASUREMENT_DATA
WHERE
(
USAGE_STATUS_CD is null
OR USAGE_STATUS_CD <> 'BILLED'
)
AND TRIM(CALL_TYPE)='I'
AND ACCOUNT_PRODUCT_ID = ?
)
INNER, LERG
WHERE LERG.NPA(+)=INNER.NPA
AND LERG.NXX(+)=INNER.NXX
ORDER BY INNER.ACTIVITY_DATE, INNER.ACTIVITY_TIME
) OUTER
WHERE outer.QUERY_ROWNUM BETWEEN ? AND ?

It is possible that only one call_type exists (I or O). I want to know if there is a way (using "exists", probably) to only run the query for one call type if there are no records of the other call_type.

Thanks,

R