|
sqlnovice123
Constraint Violating Yak Guru
262 Posts |
Posted - 2006-02-06 : 13:51:03
|
| Hello,Based on the code below, I notice that the Left Join tries to match any row in the same table(db..external_id_snapshot) twice based on the values 1 and 2 for the column external_id_type. Is this the simplest, best and the only way of implementing the Left Join or are there other ways? LEFT JOIN db..external_id_snapshot_table sedol ON sec.security_id = sedol.security_id AND sedol.external_id_type = 2 LEFT JOIN db..external_id_snapshot_table cusip ON sec.security_id = cusip.security_id AND cusip.external_id_type = 1SELECT ModelID = today.ModelID , RelativeUniverseID = today.RelativeUniverseID , SecurityGroupID = today.SecurityGroupID , SecurityID = today.SecurityID , ModelValueT = CONVERT(decimal (8, 4), today.ModelValue) , ModelValueY = CONVERT(decimal (8, 4), yest.ModelValue) , ModelDiff = CONVERT(decimal (8, 4), today.ModelValue-yest.ModelValue) , tCapUSD = CONVERT(varchar(17), tSGF.cap_usd, 1) , tBPR = tSGF.BPR , tEPR = tSGF.EPR , tCEPR = tSGF.CEPR , tFCEPR = tSGF.FCEPR , tFEPR = tSGF.FEPR , tMOMR = tSGF.MOMR , yCapUSD = CONVERT(varchar(17), ySGF.cap_usd, 1) , yBPR = ySGF.BPR , yEPR = ySGF.EPR , yCEPR = ySGF.CEPR , yFCEPR = ySGF.FCEPR , yFEPR = ySGF.FEPR , yMOMR = ySGF.MOMR , Name = sec.name , EXT_ID = ISNULL(cusip.external_id, sedol.external_id) , CountryName = cty.name , IndustryName = ind.nameFROM OMdb.dbo.AP_SecurityGroupModelValues todayJOIN dbArchive.dbo.APSecurityGroupModelValSaveD yestON today.SecurityID = yest.SecurityIDAND today.ModelID = yest.ModelIDAND yest.ArchiveDataDate = 20060204 /*@DataDate*/JOIN OMdb.dbo.AP_SecurityGroupMembers mem ON mem.SecurityID = today.SecurityIDAND mem.UniverseID = 4 /*@UniverseID*/AND mem.GroupClassID = 1JOIN #today tSGF ON today.SecurityGroupID = tSGF.SecurityGroupIDJOIN #yest ySGF ON yest.SecurityGroupID = ySGF.SecurityGroupIDJOIN OMdb..APSecurities gsec ON today.SecurityID = gsec.SecurityIDJOIN db..security_table sec ON today.SecurityID = sec.security_idLEFT JOIN db..external_id_snapshot_table sedol ON sec.security_id = sedol.security_id AND sedol.external_id_type = 2 LEFT JOIN db..external_id_snapshot_table cusip ON sec.security_id = cusip.security_id AND cusip.external_id_type = 1JOIN db..iv_eq_security_table esec ON today.SecurityID = esec.security_idJOIN db..country_table cty ON esec.primary_country = cty.countryJOIN db..industry_table ind ON esec.primary_industry = ind.industry AND esec.industry_type = ind.industry_typeWHERE today.ModelID = 4/*@ModelID*/AND ABS(today.ModelValue-yest.ModelValue) >= 0 /*@PerentChange*/AND gsec.CapUSDMM >= ISNULL(gsec.CapUSDMM, 0.3)/*@CapThreshold)*/AND /*(@FilterSecurityGroupID*/ 39123 IS NULL OR /*(@FilterSecurityGroupID*/(39123 IS NOT NULL AND today.SecurityID IN (SELECT SecurityID FROM OMdb..AP_SecurityGroupSecurities WHERE SecurityGroupID = 39123/*@FilterSecurityGroupID*/ ) ) --)Thanks in advance!sqlnovice123 |
|