SELECT TRD.PKG_ID||'_'||TRD_CONT_NBR||'_'||LEG.TRD_LEG_NBR||'_'|| TRD.TRD_ID||'_'||CF.CURR_CODE||'_'||cf.cflw_date||'_'||CF.CFLW_TYPE_CODE
||'_'||CF.CFLW_STATUS_CODE as Surrogate_key
, CF.EFF_DATE, TRD.PKG_ID, TRD_CONT_NBR, TRD.SRCE_TRD_ID
, LEG.TRD_LEG_NBR, TRD.TRD_ID, LEG.TRD_LEG_ID
, CF.CURR_CODE, cf.cflw_date, CF.TRD_CURR_CASH_FLOW_AMT
, CF.INT_RATE, cf.INT_RATE, CF.CFLW_TYPE_CODE, CF.CFLW_TYPE_GRP_CODE
, CF.CFLW_STATUS_CODE
from edw.extv_t_dim_trd TRD
, edw.extv_t_trade_leg LEG
, edw.extv_fact_cash_flow CF
where TRD.SRCE_TRD_ID = CF.SRCE_TRD_ID
and TRD.TRD_ID = CF.TRD_ID
and CF.SRCE_TRD_ID = LEG.SRCE_TRD_ID
and CF.TRD_LEG_ID = LEG.TRD_LEG_ID
and TRD.SRCE_SYS_CODE = 'WSS'
and cf.SRCE_SYS_CODE = 'WSS'
and leg.SRCE_SYS_CODE = 'WSS'
AND TRD.TRD_STATUS_CODE <> 'CANCELED'
AND LEG.INSTM_TYPE_CODE NOT IN ('FX', 'FX-OPTION')
AND TRD.TRD_ACTV_TO_DATE >= to_date('04/01/2013','mm/dd/yyyy')
and TRd.TECH_TRD_FLAG = 'N'
and cf.cflw_status_code = 'FINAL'
and TRD.ACTV_FLAG = 'Y'
and LEG.ACTV_FLAG = 'Y'
and cf.actv_flag ='Y'
위의 쿼리를 사용하면 Surrogate_key에 고유 한 값을 추가 할 수 있었지만 고유 한 값을 찾을 수 있었지만 쿼리에 대한 전반적인 기록은 3 백만 개였습니다. 별개의 250 만 개가 있지만 비 고유 한 가치를 중지하십시오. 5 백만. 그러면 어떻게 할 수 있습니까?고유하지 않은 레코드를 찾는 방법은 무엇입니까?
그리고 우리가 Surrogate_key를 구성 할 때 사용하는 테이블에 기본 키가 하나 더없는 경우가 하나 더 있습니다. 그것도 일부 중복 값을 포함하고있었습니다. 이러한 문제를 피하기 위해 사용해야 할 경우 어떤 방법이 필요한지 미래.
감사합니다, Srini
내가 어쩌면이 스크립트가 도움이 될 것입니다 모든 문제를 알아 보았하지만 surrogate_key의 중복을 검색 할 가정하지 않는
제대로 코드를 포맷하십시오 쿼리를 감소 핵심 문제. 고맙습니다. –
오라클 사람들은 조인을 수행하기 위해 ANSI SQL을 배워야합니다. 관절이 거기에서 끝나면 where 절이 엉망입니다. –
@ srini 무엇을 찾으십니까? Surrogate_key의 중복? 왜냐하면, 아마도 내가 너를 도울 수 있기 때문이야. –