-2
CREATE TABLE #DaysTable(tdays datetime)
    -- SET NOCOUNT ON added to prevent extra result sets from

    -- interfering with SELECT statements.
    SET NOCOUNT ON;

WITH

CTE_Days AS

(

SELECT DATEADD(month, @month, DATEADD(month, -MONTH(@dataforDate), DATEADD(day, -DAY(@dataforDate) + 1, CAST(FLOOR(CAST(@dataforDate AS FLOAT)) AS DATETIME)))) Days

UNION ALL

SELECT DATEADD(day, 1, Days)

FROM CTE_Days

WHERE Days < DATEADD(day, -1, DATEADD(month, 1, DATEADD(month, @month, DATEADD(month, -MONTH(@dataforDate), DATEADD(day, -DAY(@dataforDate) + 1, CAST(FLOOR(CAST(@dataforDate AS FLOAT)) AS DATETIME))))))

)

insert into #dayatable
select * from
    (
SELECT DATEADD(month, @month, DATEADD(month, -MONTH(@dataforDate), DATEADD(day, -DAY(@dataforDate) + 1, CAST(FLOOR(CAST(@dataforDate AS FLOAT)) AS DATETIME)))) Days

UNION ALL

SELECT DATEADD(day, 1, Days)

FROM CTE_Days

WHERE Days < DATEADD(day, -1, DATEADD(month, 1, DATEADD(month, @month, DATEADD(month, -MONTH(@dataforDate), DATEADD(day, -DAY(@dataforDate) + 1, CAST(FLOOR(CAST(@dataforDate AS FLOAT)) AS DATETIME))))))
)

しかし、これは私にエラーを与えます。

4

2 に答える 2

0
  • select、insert、update、または delete はそれぞれ別個のステートメントです。
  • したがって、それぞれに CTE 式が必要です。
  • 最初のものだけがそれを持っています。
于 2013-11-07T10:05:35.243 に答える