首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >查询变量行并存储到一个表中

查询变量行并存储到一个表中
EN

Stack Overflow用户
提问于 2014-02-19 22:50:13
回答 3查看 35关注 0票数 0

我有一条SQL Server select语句,它在创建的表中插入数据。

现在,我必须定义所有参数并为每个参数运行语句。为了更有效率,我希望在连续的几天内多次运行该语句,例如在2013-31-122014-02-19之间的所有日期。

最后,我希望将结果数据放在一个表中,在定义的timestamp列(假设是定义的变量)中有不同的时间戳。

现在我的工作是:

代码语言:javascript
运行
复制
DECLARE @historicalDate DATETIME

SELECT  @historicalDate = '2013-31-12'#

SELECT * ....
rest...
into #data

我知道如何用C或MATLAB做这件事。我只需要使用一个for循环并定义一个运行变量来运行该语句并将其存储在一个表中。

但是如何在SQL Server中处理呢?

EN

回答 3

Stack Overflow用户

发布于 2014-02-19 22:59:29

您可以在SQL中运行While循环。有关语法,请查看http://technet.microsoft.com/en-us/library/ms178642.aspx

因此,对于您的情况,如下所示:

代码语言:javascript
运行
复制
WHILE (SELECT datetime FROM historicalDate) < '2014-02-19')
{
   //your code to update datebase
}
票数 0
EN

Stack Overflow用户

发布于 2014-02-19 23:13:24

如果要插入定义日期范围的所有行-请使用类似以下内容:

代码语言:javascript
运行
复制
DECLARE @FromDate DATETIME
DECLARE @ToDate DATETIME

SET @FromDate = '20131231'   -- use the robust ISO-8601 format here to avoid issues!
SET @ToDate = '20140219'

SELECT (list of columns)
INTO #data(list of columns)
WHERE TimestampColumn >= @FromDate 
  AND TimestampColumn <= @ToDate 

这可以在一个基于集合的操作中完成整个处理过程--非常简单

或者,如果这不能解决你的问题,你到底想要达到什么目的?

票数 0
EN

Stack Overflow用户

发布于 2014-02-19 23:26:27

最简单的解决方案是使用日历表,并将指定日期范围的日历表连接到您的查询。如果您还没有日历表,请参阅:How to create a Calender table for 100 years in Sql

然后,您将能够执行类似以下内容的操作:

代码语言:javascript
运行
复制
Select <fields>
FROM <YourTable> T
CROSS JOIN CALENDAR C
WHERE C.DATE BETWEEN @startdate and @enddate
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21883979

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档