SQL:联接条件中为空
有没有别的方法写这个。如果应用程序表中的CreditcardID为空,则从Terminatedcreditcard表中加入CreditcardID。谢谢 这就是错误: Msg 4104,16级,状态1,第18行SQL:联接条件中为空,sql,sql-server,Sql,Sql Server,有没有别的方法写这个。如果应用程序表中的CreditcardID为空,则从Terminatedcreditcard表中加入CreditcardID。谢谢 这就是错误: Msg 4104,16级,状态1,第18行 无法绑定多部分标识符“TC.CreditCardID” 代码: 有两点: 你在结果集中似乎并没有使用信用卡号码,所以我不清楚你为什么想要它 您需要在TerminatedCreditCard的联接中加入空检查。您收到错误是因为您试图在加入TerminatedCreditCard之前引用它
无法绑定多部分标识符“TC.CreditCardID” 代码: 有两点:
SELECT Distinct
prg.Title as Program
,a.Patientid
,a.Applicationid
,PT.MCC
,PT.MerchantName
,PT.MerchantCity
,PT.MerchantState
,PT.MerchantZip
,PT.SettlementTransactionID
,convert(Date,PT.SettlementDate) as SettlementDate
,ABS(PT.Amount) as TransactionAmount
,COALESCE(TC.CreditCardId, a.CreditCardId) as CreditCardId
FROM [dbo].[StagingSettlements] PT
LEFT JOIN dbo.Application a
ON a.<applicationid> = PT.<applicationid>
LEFT JOIN dbo.TerminatedCreditCard TC
ON TC.ApplicationId = a.ApplicationId
AND a.CreditCardId IS NULL
选择Distinct
项目名称
,a.Patientid
,a.Applicationid
,PT.MCC
,PT.MerchantName
,商业部
,PT.MerchantState
,PT.MerchantZip
,PT.SettlementTransactionID
,将(日期,PT.结算日期)转换为结算日期
,ABS(部分金额)作为交易金额
,合并(TC.creditcardd,a.creditcardd)为creditcardd
来自[dbo].[StagingSettlements]PT
左连接dbo.a应用程序
a.=PT。
左连接dbo.TerminatedCreditCard TC
在TC.ApplicationId=a.ApplicationId上
a.CreditCardId为空
您可以更改join以获得以下内容:
FROM [dbo].[StagingSettlements] AS PT
LEFT JOIN ( dbo.Application AS a
LEFT JOIN dbo.TerminatedCreditCard AS TC on TC.ApplicationId = a.ApplicationId )
ON PT.[CustomId] = ISNULL( a.CreditCardId, TC.CreditCardID )
上述括号的添加导致首先计算
应用程序
到终止信用卡
的联接,然后将结果联接到阶段设置
结果集中不使用信用卡ID。有时应用程序表中的信用卡ID为空,所以我想加入终止的信用卡表中的信用卡ID。在你的连接条件下,StagingSettlements表没有ApplicationID字段。是的,我明白你的意思,因为我想你会发现Alex的答案会给你你想要的。
FROM [dbo].[StagingSettlements] AS PT
LEFT JOIN ( dbo.Application AS a
LEFT JOIN dbo.TerminatedCreditCard AS TC on TC.ApplicationId = a.ApplicationId )
ON PT.[CustomId] = ISNULL( a.CreditCardId, TC.CreditCardID )