3

我正在尝试运行以下查询

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

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

4

2 回答 2

3

将过滤器移至ON条件

ON告诉用于 Joining 的行是什么,但是where子句过滤join.

只有vw_daily表中匹配的行才会有值,asofdate因此过滤子句中的行将执行从到Where的隐式转换FULL OUTER JOININNER 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 
                       AND mr.asofdate = '20141121'
于 2015-08-24T14:57:57.313 回答
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'
于 2015-08-24T15:00:12.220 回答