Sunday, 15 September 2013

Qualify clause in Oracle

Qualify clause in Oracle

I'm working in Teradata to Oracle migration project. How can i modify the
below query which is using QUALIFY in Teradata.
//QUERY 1
SELECT S.ID as Id,S.MP_CD as Code,S.GM_CD as GmCode,S.GM_MSR_NBR as
Mea_Year,
S.STTS_CD as YearCode,S.TRMNTN_DTM as TerminationDate FROM PD.RVY S,
LOAD_LOG TLL
WHERE S.UPDTD_LOAD = TLL.LOG_KEY AND TLL.BLSH_CD = 'Y' AND S.STTS_CD IN
( 'C', 'P' )
QUALIFY ROW_NUMBER () OVER (PARTITION BY S.GM_CD ,S.MP_CD ,S.GM_MSR_NBR
,S.STTS_CD ORDER BY S.SO_DTM DESC ) = 1;
//Query 2
SELECT
SP.ID,SP.SO_DTM,SP.TAX_ID,SP.USER_ID,SP.FRST_NM,SP.LAST_NM,SP.PHONE_NBR,
QSRP.TAX_ID,QSRP.ROW_ID,MAX(SP.SO_DTM) OVER (PARTITION BY SP.ID,
SP.TAX_ID) MAX_SO_DTM
FROM VOPR_RMSY SP,VOPR_RMSY_SPNS QSRP
WHERE SP.ID =:URVYID AND QSRP.TAX_ID =:RPAXID
AND SP.ID = QSRP.ID AND SP.TAX_ID = QSRP.TAX_ID AND SP.SO_DTM = QSRP.SO_DTM
QUALIFY ( SP.SO_DTM=MAX_SO_DTM AND QSRP.SO_DTM = MAX_SO_DTM)
GROUP BY
SP.ID,SP.SO_DTM,SP.TAX_ID,SP.USER_ID,SP.FRST_NM,SP.LAST_NM,SP.PHONE_NBR,
QSRP.TAX_ID,QSRP.ROW_ID;
For this tried with HAVING instead of qualify but got an Error: ORA-00904:
"MAX_SO_DTM": invalid identifier 00904. 00000 - "%s: invalid identifier"
seems like alias used for MAX is not working here....
Any of your help is really appreciated!

No comments:

Post a Comment