0
我对查询的结果感到惊讶,希望有人能解释它。左外连接+ where子句意外结果
查询是那种大的,所以我把它蒸馏的关键部分:
SELECT *
FROM A
INNER JOIN B ON A.id = B.id
LEFT JOIN C ON C.ID = B.ID
WHERE A.Dt = '2016-06-23'
AND (B.StatusCode=' ' OR C.Code <> 9)
我得到比16年6月23日等日期,即使我有它在我的where子句。我认为它与左连接表中的where子句中的列和一个表达式中的内连接表结合起来,但以前从未遇到过这种情况。
UPDATE:添加实际查询
SELECT *
FROM CERT2.cube_mbbal_Daily_Balances BAL
INNER JOIN CERT.Dim_Account A ON A.AccountKey = BAL.AccountKey
LEFT JOIN CERT2.Dim_LoanAccount LA ON A.AccountKey = LA.AccountKey
WHERE
(A.AccountClassification IN ('Checking', 'Savings')
AND AccountStatus IN ('1', '3', '5', '6', '7'))
OR
(A.AccountClassification IN ('Time')
AND AccountStatus IN ('1', '5', '7'))
OR
(A.AccountClassification IN ('Loan')
AND (AccountStatus <> 'C' OR RiskCode <> 9))
AND BAL.DateOfFinancialMeasure = 20160623
到内部连接移动你的病情a.dt看到 – techspider
你有超过简化了查询。您的'WHERE'子句不能返回除指定的其他日期之外的任何其他日期。 –
@techspider同意,我怀疑是B或C上有1对多,这是造成问题 –