SQL Server 2008R2完全外部联接不起作用

时间:2015-08-24 14:54:50

标签: sql sql-server join sql-server-2008-r2 full-outer-join

我正在尝试运行以下查询

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,不是完全连接也返回所有不匹配的行?我错过了什么

视图和表之间没有共同数据。

2 个答案:

答案 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'