我想从表中返回特定日期范围的数据。为此,我有一个接受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
非常感谢任何帮助
答案 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