我需要根据示例中给出的天数创建临时表,
我需要2015-06-08
到2015-06-29
的临时表,我将创建22个临时表,每个临时表根据日期有自己的数据。
我的查询会在循环中选择数据到这些临时表中,唯一需要更改的是日期。
答案 0 :(得分:0)
由于这里的每个人都建议您不需要每个日期的表格,而是每个日期的表格中都有一行,而且您不一定需要将结果存储到临时表中。
您可以编写一个生成此日期范围的查询,并将现有查询与日期范围查询的结果相结合。
存储查询结果有利于人们直观地查看数据但是sql server不需要临时表中的数据来继续进行数据处理,如果你有一个你知道会产生特定结果集的查询,您可以使用该结果集加入另一个表,但是您没有在运行时看到结果集,但是sql server在运行时获取该结果集并将其与您的表连接。
现在希望如果我说服你不需要每个日期的临时表,那就谈谈解决方案吧。
您只需要一个查询,该查询会生成日期范围为2015-06-08
到2015-06-29
的结果集,您可以执行以下操作:
DECLARE @From DATE = '2015-06-08'
DECLARE @To DATE = '2015-06-29'
SELECT Dates
FROM
(
SELECT TOP (DATEDIFF(DAY,@From , @To))
DATEADD(DAY ,
ROW_NUMBER() OVER (ORDER BY (SELECT NULL))
,@To) AS Dates
FROM master..spt_values
)Dates_Table
上面的查询将生成一个包含日期的结果集,现在您可以使用此结果集加入另一个表以获得所需的最终结果。