我试图从3个不同的表中提取数据,而我的结果集并不是我所期待的。
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列作为空值返回。此列包含表中的数据,我希望我的结果集包含该数据,但它没有。
答案 0 :(得分:2)
该空值来自左连接中使用的第二个表。左连接将返回第一个表(左侧)中的所有结果,如果它没有在第二个表中找到要匹配的匹配项,则它将使第一个表与空值配对。看看你的产品匹配。