sql >> データベース >  >> RDS >> Sqlserver

cte での TSQL Maxrecursion

    オプションを間違った場所に配置している可能性があります。 where の後にある必要があります

    WITH allDays AS (
        SELECT @DateEarly AS date
        UNION ALL
        SELECT DATEADD(dd, 1, date) as date
        FROM allDays s  
        WHERE DATEADD(dd, 1, date) <= @DateLate
    )
    SELECT *
    from allDays 
    where dbo.isFestivo(date)>0
    option (maxrecursion 200);
    

    しかし、代わりにこれを試してください。その方が早いでしょう...

    select DATEADD(d, number, @dateearly) as [date]
    from master..spt_values 
    where type='p'
    and number<=datediff(d,@dateearly,@datelate)
    and dbo.isFestivo(date)>0
    



    1. 同じテーブルを異なる列で2回結合する

    2. jspページを介してデータベース上の2つの異なるテーブルにフォームデータを挿入します

    3. LaravelのELOQUENTORMで結果を制限する方法はありますか?

    4. UNIONを使用して複数のテーブルから選択する