Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

TSQL Maxrecursion trên cte

Có thể bạn đang đặt tùy chọn sai chỗ. Nó cần phải ở sau nơi

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

Nhưng hãy thử điều này thay thế. Sẽ nhanh hơn ...

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. Làm cách nào để kết xuất tất cả hình ảnh của chúng tôi từ trường VARBINARY (MAX) trong SQL Server 2008 vào hệ thống tệp?

  2. Sử dụng CASE để trả về một chuỗi nếu không có kết quả từ câu lệnh SELECT

  3. Bất kỳ nhược điểm nào của WITH RECOMPILE đối với các quy trình proc được lưu trữ trên SQL Server hàng tháng?

  4. Cách tìm định dạng ngày được sử dụng trong phiên hiện tại trong SQL Server (T-SQL)

  5. Sự khác biệt giữa giao dịch ngầm và rõ ràng