【发布时间】:2017-04-11 15:11:05
【问题描述】:
我想从表格中返回特定日期范围内的数据。为此,我有一个接受 @fromDate 和 @toDate 参数的存储过程。
sql 如下所示:
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
这按预期工作并返回此范围内的结果,但我的问题是即使ResultsTable 中没有结果我也想返回空结果。基本上,如果我请求 7 天的结果,我应该得到 7 个结果,其中部分或全部可能不存在。
我试图用这个范围内的日期创建一个虚拟表,但我不知道如何将它与其他 sql 连接:
INSERT INTO #tempDates
SELECT DATEADD(DAY, nbr - 1, @fromDate)
FROM ( SELECT ROW_NUMBER() OVER ( ORDER BY c.object_id ) AS Nbr
FROM sys.columns c
) nbrs
WHERE nbr - 1 <= DATEDIFF(DAY, @fromDate, @toDate)
任何帮助将不胜感激
【问题讨论】:
-
请提供您的主数据表和结果表中的数据样本,以及该样本数据应如何查找您的最终结果。以
declare @MainData table (Id int...); insert into @MainData values...的形式进行
标签: sql sql-server