我正在尝试运行以下查询
SELECT mr.AsofDate as date,
mr.FA,
mr.TPNL as tpnl,
mr.MPNL as mpnl,
mrf.tpnl as mrfTpnl,
mrf.cpnl as mrfCpnl
FROM vw_daily mr
FULL OUTER JOIN mrfeeddaily mrf
ON mr.FA = mrf.book and mr.AsofDate = mrf.AsOfDate
WHERE mr.AsofDate = '20141121'
但我最终只从第一个视图vw_daily
获取行,而mrfeeddaily
中的列是NULL,不是完全连接也返回所有不匹配的行?我错过了什么
视图和表之间没有共同数据。
答案 0 :(得分:3)
将过滤器移至ON
条件
ON
说明用于加入的行是什么,但where
子句会过滤join
的结果。
vw_daily
表中只有匹配的行才会在asofdate
中具有值,因此过滤Where
子句中的行将从FULL OUTER JOIN
隐式转换为{ {1}}
INNER JOIN
答案 1 :(得分:0)
过滤联盟中的条件。
SELECT mr.AsofDate AS date, mr.FA, mr.TPNL AS tpnl, mr.MPNL AS mpnl, mrf.tpnl AS mrfTpnl, mrf.cpnl AS mrfCpnl
FROM vw_daily mr
FULL OUTER JOIN mrfeeddaily mrf ON mr.FA = mrf.book
AND mr.AsofDate = mrf.AsOfDate
AND mr.AsofDate = '20141121'