基于评论已更新...
第一只股票(ISIN)是主要股票,第二只股票是我们用来衡量其表现的基准(MNEMONIC)。只要存在基准,我的查询就可以工作并返回结果。但是,当不存在基准时(即因为尚未确定基准),该查询根本不会返回任何结果。在任何情况下如何获取主要库存(始终存在)的结果?
这是我当前的SQL:
PARAMETERS strISIN Text ( 255 );
SELECT
tblFUNDS.ISIN, tblFunds_TS_Data.Date, tblFunds_TS_Data.Price, tblBM_Data.MNEMONIC,
tblBM_TS_Data.Date, tblBM_TS_Data.Price, RiskFreeReturn.F6 AS RiskFreeReturn_USD,
tblFUNDS.Fund_Selection
FROM
((((tblFUNDS LEFT OUTER JOIN tblFunds_Data ON tblFUNDS.ISIN = tblFunds_Data.ISIN)
LEFT OUTER JOIN tblFunds_TS_Data ON tblFunds_Data.ISIN = tblFunds_TS_Data.ISIN)
LEFT OUTER JOIN tblBM_Data ON tblFUNDS.DS_Benchmark_Symbol = tblBM_Data.MNEMONIC)
LEFT OUTER JOIN tblBM_TS_Data ON tblBM_Data.MNEMONIC = tblBM_TS_Data.MNEMONIC)
LEFT OUTER JOIN RiskFreeReturn ON tblFunds_TS_Data.Date = RiskFreeReturn.F1
WHERE
(((tblFUNDS.ISIN)=[strISIN])
AND ((tblFunds_TS_Data.Date)=[tblBM_TS_Data].[Date]
And (tblFunds_TS_Data.Date)>=#12/28/2013#)
AND ((tblFUNDS.Fund_Selection)=0))
ORDER BY tblFunds_TS_Data.Date;
答案 0 :(得分:1)
问题在于此“ WHERE”条件位于“左联接”外侧的桌子上:
And tblFunds_TS_Data.Date >= #12/28/2013#
要对此表进行过滤,您需要添加OR ... IS NULL
,因此查询仍然可以包括OUTER侧为空的记录:
And (tblFunds_TS_Data.Date >= #12/28/2013# OR tblFunds_TS_Data.Date IS NULL)