如果特定范围内没有任何数据,如何返回空数据?

时间:2017-04-11 07:08:52

标签: sql sql-server

我想从表中返回特定日期范围的数据。为此,我有一个接受daemonize@fromDate参数的存储过程。

sql看起来像这样:

@toDate

这按预期工作并返回此范围内的结果,但我的问题是,即使DECLARE @fromDate DATETIME, @toDate DATETIME SET @fromDate = '2017-04-01' SET @toDate = '2017-04-07' SELECT MD.ID, MD.Name, RT.Result, RT.DateOn FROM MainData MD LEFT JOIN ResultsTable RT RT.MainDataID = MD.ID WHERE RT.DateOn >= @fromDate AND RT.DateOn <= @toDate 中没有结果,我也希望返回空结果。基本上,如果我要求结果为期7天,我应该得到7个结果,其中部分或全部可能不存在。

我尝试创建一个包含此范围内日期的虚拟表,但我不确定如何将其与其他sql连接:

ResultsTable

非常感谢任何帮助

1 个答案:

答案 0 :(得分:2)

将日期条件从WHERE子句移动到ON子句:

SELECT MD.ID, MD.Name, RT.Result, RT.DateOn
FROM MainData MD
LEFT JOIN ResultsTable RT
    ON RT.MainDataID = MD.ID AND
       RT.DateOn BETWEEN @fromDate AND @toDate