有没有办法选择一个常量范围,比如1到100之间的每个整数,或者两个日期之间的每个月?
与其这样做..。
select '2010-01-01' union
select '2010-02-01' union
select '2010-03-01' union
select '2010-04-01' union
select '2010-05-01' union
select '2010-06-01' union
select '2010-07-01' union
select '2010-08-01' union
select '2010-09-01' union
select '2010-10-01' union
select '2010-11-01' union
select '2010-12-01'发布于 2010-10-06 13:26:30
您可以对1到100之间的每个整数使用CTE查询。
WITH IntegerRangeCTE([i]) AS
(
SELECT
1 AS [i]
UNION ALL
SELECT
[i] + 1
FROM
IntegerRangeCTE
WHERE [i] < 100
)
SELECT * FROM IntegerRangeCTE对于介于2010-01-01到2010-12-31之间的日期,您可以使用此选项。
WITH DateRangeCTE([d]) AS
(
SELECT
CONVERT(DATETIME, '2010-01-01') AS [d]
UNION ALL
SELECT
DATEADD(m, 1, [d]) AS [d]
FROM
DateRangeCTE
WHERE [d] < DATEADD(m, -1, CONVERT(DATETIME, '2010-12-31'))
)
SELECT * FROM DateRangeCTE如果收到消息“语句已终止。语句完成前最大递归N已耗尽。”,请使用query hint MAXRECURSION。
https://stackoverflow.com/questions/3869608
复制相似问题