Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

TSQL Maxrecursion na cte

Prawdopodobnie umieszczasz opcję w złym miejscu. Musi być po tym, gdzie

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);

Ale zamiast tego spróbuj tego. Będzie szybciej...

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Znajdź ostatnio wstawiony rekord MS SQL SERVER

  2. Dlaczego przesyłanie/konwertowanie z int zwraca gwiazdkę

  3. SIGN() Przykłady w SQL Server

  4. Jak zaszyfrować wszystkie istniejące procedury przechowywane w bazie danych?

  5. .NET Core nie może połączyć się ze zdalną bazą danych SQL Server