我需要在SQL中运行一个简单的选择查询。
问题是我需要12个不同月份的输出。有没有办法像宏一样执行一次我写一次查询,只需更改星期几就可以自行运行12次?
由于
答案 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和递归查询一起,您几乎无法做到。
您的问题可以通过
解决我想说概念递归查询最难理解和维护,所以请阅读大量示例。