我正在与一些左连接进行合并,并且他们正在使用我在on语句中使用的相同密钥,并且我从SQL Server获取:
Msg 8156,Level 16,State 1,Procedure sp_CommonLoanData,Line 41
“l”指定了多次“LNKEY”列。 我测试select语句的方式,它工作并检索所有数据。 代码
/*********************************************************************************
Author: Herb Williams
Date: Oct 08 2014
Purpose: This stored procedure builds the CommonLoanData table in CTS from the replicated
Empower tables in CTS. It check the Using Merge below is the process.
1. Update if there is a loan number
2. Inserted if there is not a loan number
*********************************************************************************/
CREATE PROCEDURE [dbo].[sp_CommonLoanData]
---------------------------------------
-- I N S E R T
---------------------------------------
AS
MERGE CommonLoanData AS cl
USING (Select l.LNKEY as mainKey,
l.STOREDON,
f.NEWFHACASEDATE,
m.ADJUSTED_BASE_RATE,
d.DISBDATE,
w.COLLATERALORIGRECVD,
w.HEDGEDATE,
l.LNKEY,
b.BORR_LAST,
b.BORR_FIRST,
p.PROPWILLBE,
lp.LPLANDESC,
pf.REF_PURP,
m.AMORTTYPE,
lp.NUMPMTS,
m.INTRATE,
m.LOANAMT,
m.LTV,
r.HOUSING_RATIO,
dd.EW_RETAXES,
dd.EW_HAZINS,
dd.EW_FLOODINS,
a.AUSRESULT,
t.REPCREDSCORE,
s3.HIGH_PRICED_LOAN,
m.PRC_BASE_PTS,`enter
ma.POINTS_ADJ,
m.ADJUSTED_BASE_RATE,
w.ALL_IN_PRICE,
pa.ADJ_DESC,
pa.POINTS_ADJ,
m.LOCKINDATE,
m.LOCKINEXPIRES,
c.U_AGENT_WAREHOUSE,
i.AGENT_COMPANY,
repairs.amt,
s3.HIGH_PRICED_LOAN,
r.DEBT_RATIO,
m.CLTV,
l.STOREDON
from [EMPOWER].[LN_DBLOCKS] AS l
left join [EMPOWER].[LN_MTGTERMS] AS m on (m.LNKEY = l.LNKEY)
left join [EMPOWER].[LN_MANUAL_PRC_ADJ] AS ma on (ma.LNKEY = l.LNKEY)
left join [EMPOWER].[LN_CODES] AS cd on (cd.LNKEY = l.LNKEY)
left join [EMPOWER].[LN_DISBURSEMENTS] AS d on (d.LNKEY = l.LNKEY)
left join [EMPOWER].[LN_DEEDDATA] AS dd on (dd.LNKEY = l.LNKEY)
left join [EMPOWER].[LN_BORRINFO] AS b on (b.LNKEY = l.LNKEY)
left join [EMPOWER].[LN_PLANDAT] AS lp on (lp.LNKEY = l.LNKEY)
left join [EMPOWER].[LN_FHAVACLC] AS f on (f.LNKEY = l.LNKEY)
left join [EMPOWER].[LN_RATIOS] AS r on (r.LNKEY = l.LNKEY)
left join [EMPOWER].[LN_PROPINFO] AS p on (p.LNKEY = l.LNKEY)
left join [EMPOWER].[LN_PRICADJ] AS pa on (pa.LNKEY = l.LNKEY)
left join [EMPOWER].[LN_PROPREFI] AS pf on (pf.LNKEY = l.LNKEY)
left join [EMPOWER].[LN_SECTION35] AS s3 on (s3.LNKEY = l.LNKEY)
left join [EMPOWER].[LN_AUS_RESULTS] AS a on (a.LNKEY = l.LNKEY)
left join [EMPOWER].[LN_CONTACTS] AS c on (c.LNKEY = l.LNKEY)
left join [EMPOWER].[LN_INVESTORS] AS i on (i.LNKEY = l.LNKEY)
left join [EMPOWER].[LN_TRANSUMM] AS t on (t.LNKEY = l.LNKEY)
left join [EMPOWER].[U_LN_WEB_BUILDER] AS w on (w.LNKEY = l.LNKEY)
LEFT JOIN (SELECT LNKEY, sum(ITEMCOST) amt FROM EMPOWER.LN_REPAIRFUNDS GROUP BY LNKEY) repairs on repairs.LNKEY = m.LNKEY)
AS l
ON (CommonLoanDataId = mainKey )
and (l.STOREDON > cl.LastUpdated)
---------------------------------------
-- M E R G E D
---------------------------------------
WHEN MATCHED
THEN UPDATE
SET cl.BranchMarginAdj = m.ADJUSTED_BASE_RATE,
cl.ApplicationDate = m.APP_DATE,
cl.FHACaseFileDate = f.NEWFHACASEDATE,
cl.FundedDate = d.DISBDATE,
cl.CollateralReceivedDate = w.COLLATERALORIGRECVD,
cl.HedgedDate = w.HEDGEDATE,
cl.LoanNumber = l.LNKEY,
cl.BorrowerLastName = b.BORR_LAST,
cl.BorrowerFirstName = b.BORR_FIRST,
cl.Occupancy = p.PROPWILLBE,
cl.PropertyState = p.PROP_STATE,
cl.PropertyType = null,
cl.Program = lp.LPLANDESC,
cl.DocType = null,
cl.LoanType = null,
cl.LoanPurpose = null,
cl.RefiPurpose = pf.REF_PURP,
cl.LienPosition = null,
cl.FinanceMethod = m.AMORTTYPE,
cl.Term = lp.NUMPMTS,
cl.NoteRate = m.INTRATE,
cl.LoanAmount = m.LOANAMT,
cl.Ltv = m.LTV,
cl.Hsg = r.HOUSING_RATIO,
cl.WaivedImpounds = case when dd.EW_RETAXES = 1 or dd.EW_HAZINS = 1 or dd.EW_FLOODINS = 1 then 1 end,
cl.AUSType = null,
cl.AUSDecision = a.AUSRESULT,
cl.LoanFico = t.REPCREDSCORE,
cl.MIType = null,
cl.HPMLFlag = s3.HIGH_PRICED_LOAN,
cl.SecondaryNotesCPExceptionNotes =null,
cl.BondStylePrice = m.PRC_BASE_PTS,
cl.ProgramPriceAdjTotal = ma.POINTS_ADJ,
cl.AdjustedBasePrice = m.ADJUSTED_BASE_RATE,
cl.AllInPrice = w.ALL_IN_PRICE,
cl.LLPANameItemized = pa.ADJ_DESC,
cl.LLPAAmountItemized = pa.POINTS_ADJ,
cl.LockDate = m.LOCKINDATE,
cl.LockExpiration = m.LOCKINEXPIRES,
cl.LockCanceled = null,
cl.CondoType = null,
cl.AUSRiskDecision = null,
cl.WarehouseLine = c.U_AGENT_WAREHOUSE,
cl.Investor = i.AGENT_COMPANY,
cl.ExclusionIndicator = case when repairs.amt > 0 or mcc > 0 or s3.HIGH_PRICED_LOAN > 0 then 1 else 0 end,
cl.Dti = r.DEBT_RATIO,
cl.Cltv = m.CLTV,
cl.[Source] = null,
cl.LastUpdated = l.STOREDON,
cl.WireSentDate = null,
cl.WireReturningDate = null,
cl.ShippedToInvestorDate = null,
cl.InvestorPriceLockDate = null,
cl.InvestorPriceLockExpiration = null,
cl.FirstInvestorPaymentDate = null,
cl.PAReceivedDate = null
WHEN NOT MATCHED
THEN INSERT VALUES (
m.ADJUSTED_BASE_RATE,
m.APP_DATE,
f.NEWFHACASEDATE,
d.DISBDATE,
w.COLLATERALORIGRECVD,
w.HEDGEDATE,
l.LNKEY,
b.BORR_LAST,
b.BORR_FIRST,
p.PROPWILLBE,
p.PROP_STATE,
null,
lp.LPLANDESC,
null,
null,
null,
pf.REF_PURP,
null,
m.AMORTTYPE,
lp.NUMPMTS,
m.INTRATE,
m.LOANAMT,
m.LTV,
r.HOUSING_RATIO,
case when dd.EW_RETAXES = 1 or dd.EW_HAZINS = 1 or dd.EW_FLOODINS = 1 then 1 end,
null,
a.AUSRESULT,
t.REPCREDSCORE,
null,
s3.HIGH_PRICED_LOAN,
null,
m.PRC_BASE_PTS,
ma.POINTS_ADJ,
m.ADJUSTED_BASE_RATE,
w.ALL_IN_PRICE,
pa.ADJ_DESC,
pa.POINTS_ADJ,
m.LOCKINDATE,
m.LOCKINEXPIRES,
null,
null,
null,
c.U_AGENT_WAREHOUSE,
i.AGENT_COMPANY,
case when repairs.amt > 0 or mcc > 0 or s3.HIGH_PRICED_LOAN > 0 then 1 else 0 end,
r.DEBT_RATIO,
m.CLTV,
null,
l.STOREDON,
null,
null,
null,
null,
null,
null,
null);
SELECT resource_type, request_mode, resource_description
FROM sys.dm_tran_locks
SELECT * FROM cl
ROLLBACK
答案 0 :(得分:1)
您需要指定派生表l
的列,而不是使用*
。它目前有大约15列名为LNKEY
。
使用更新的SQL,您现在有两个StoredOn定义