2013-07-26 3 views
0

Я пытался пропустить цит с заданными параметрами From и To Date. Я прочитал это create while loop with cte и попробовал его по моему запросу, но результат показывает только дату начала и следующую дату.Table-Valued-Function with cte

DECLARE @fromdate datetime 
DECLARE @todate datetime 
SET @fromdate='2013-07-23' 
SET @todate='2013-07-24' 

;with dates(num) as (
    select @fromdate as fromdate 
    union all 
    select @fromdate + 1 
    from dates 
    where dates.num < @todate  
), 
    T(employee_id,actualogin,actuallogout) as (
    select d.* 
    from dates cross apply 
    dbo.ufn_GET_ATTENDANCE(dates.num) d 
) 
SELECT * FROM T 
OPTION (MAXRECURSION 0) 
+0

отправил свое решение с помощью внушения Гордона. –

ответ

1

я был бы склонен сначала получить список дат, а затем применить функцию:

with dates as (
     select @fromdate as date 
     union all 
     select date + 1 
     from dates 
     where dates.date < @todate 
    ), 
    T(employee_id,actualogin,actuallogout) as (
    select t.* 
    from dates cross apply 
      dbo.ufn_GET_ATTENDANCE(dates.date) 
    ) 
+0

просто измените ваше утверждение, оно создает избыточную дату. "где date.date <@todate". Спасибо, ты даешь мне решение. –