Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

TSQL Maxrecursion pada cte

Anda mungkin menempatkan opsi di tempat yang salah. Itu harus setelah di mana

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

Tapi coba ini sebagai gantinya. Ini akan lebih cepat...

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. Kolom IDENTITAS SQLServer dengan teks

  2. Memanipulasi struktur tabel

  3. SQL Server 2016 :Peningkatan Grup Ketersediaan

  4. ganti NULL dengan nilai Kosong atau Nol di server sql

  5. Ubah Pengambilan Data Hanya Untuk Pembaruan dan Penghapusan