Sql 连接3个表的正确方法
我试图从3个不同的表中提取数据,结果集并不是我所期望的Sql 连接3个表的正确方法,sql,join,Sql,Join,我试图从3个不同的表中提取数据,结果集并不是我所期望的 SELECT mdp.ReportDate , mdp.PolicyNumber , Company , StateCode , LOB , mdp.AccountReference , EffectiveDate , EquityDate , AccountBalance , TermPremium , DelinquentAmount , Polic
SELECT mdp.ReportDate
, mdp.PolicyNumber
, Company
, StateCode
, LOB
, mdp.AccountReference
, EffectiveDate
, EquityDate
, AccountBalance
, TermPremium
, DelinquentAmount
, PolicyStatus
, dcbpt.PolicyTermExtendedData
, TermsInDays
, dcba.AccountId
FROM Bil_MonthlyDelinquentPayments mdp
INNER JOIN DC_BIL_Account AS dcba
ON PolicyNumber = dcba.AccountReference
AND ReportDate = (
SELECT Max(ReportDate)
FROM Bil_MonthlyDelinquentPayments maxmdp
WHERE Year(maxmdp.ReportDate) = 2017
AND Month(maxmdp.ReportDate) = 01
)
LEFT JOIN DC_BIL_PolicyTerm AS dcbpt
ON dcba.AccountId = dcbpt.PrimaryAccountId
AND PolicyTermEffectiveDate = (
SELECT Max(PolicyTermEffectiveDate)
FROM DC_BIL_PolicyTerm
)
ORDER BY AccountId
在我的结果集中,列dcbpt.PolicyTermExtendedData将作为空值返回。此列包含表中的数据,我希望我的结果集包含这些数据,但事实并非如此 该空值来自左联接中使用的第二个表。Left join将返回来自左侧第一个表的所有结果,如果它在要连接的第二个表中未找到匹配项,则将第一个表与空值配对。看看你在匹配什么。这个空值来自左连接中使用的第二个表。Left join将返回来自左侧第一个表的所有结果,如果它在要连接的第二个表中未找到匹配项,则将第一个表与空值配对。看看你在做什么。如果你没有提供足够的信息,我们怎么知道正确的查询?向我们展示示例数据和预期输出。请阅读,这里是学习如何提高问题质量和获得更好答案的好地方。表DC_BTL_PolicyTerm中的值是否满足条件和PolicyTermEffectiveDate=从DC_BIL_PolicyTerm中选择MaxPolicyTermEffectiveDate???您了解其工作原理吗?请将所有字段,我们不知道它们来自哪个表。如果您不这样做,您的查询将无法通过此处的代码检查。如果您没有提供足够的信息,我们如何知道正确的查询?向我们展示示例数据和预期输出。请阅读,这里是学习如何提高问题质量和获得更好答案的好地方。表DC_BTL_PolicyTerm中的值是否满足条件和PolicyTermEffectiveDate=从DC_BIL_PolicyTerm中选择MaxPolicyTermEffectiveDate???您了解其工作原理吗?请将所有字段,我们不知道它们来自哪个表。如果不这样做,您的查询将无法通过此处的代码审阅。感谢您的反馈,这非常有意义。感谢您的反馈,这非常有意义。