多次选择查询,更改日期

时间:2011-04-11 11:37:56

标签: sql sql-server

我需要在SQL中运行一个简单的选择查询。

问题是我需要12个不同月份的输出。有没有办法像宏一样执行一次我写一次查询,只需更改星期几就可以自行运行12次?

由于

2 个答案:

答案 0 :(得分:3)

您可以使用以下构造来获取每月12条记录,并将结果与​​原始查询交叉应用。

;WITH q AS (
  SELECT  Column1 = GetDate()
  UNION ALL
  SELECT  DATEADD(mm, 1, q.Column1)
  FROM    q
  WHERE   q.Column1 < DATEADD(mm, 11, GetDate())
)
SELECT  *
FROM    q

答案 1 :(得分:2)

尝试绕过关系代数的概念。

转换算法方法(例如循环)只会到目前为止起作用。关系代数传统上有其局限性(因此您将在所有RDBMS中找到程序支持),但是与CTE和递归查询一起,您几乎无法做到。

您的问题可以通过

解决
  • 过程SQL(有循环,请参阅example
  • 加入另一个表格,该表格将包含这12个实例的条目(此类表格可以创建用于临时使用,也可以作为系统的一部分)
  • 递归SQL(如Lieven的回答)

我想说概念递归查询最难理解和维护,所以请阅读大量示例。