【问题标题】:Table-Valued-Function with cte带有 cte 的表值函数
【发布时间】:2013-07-26 10:39:17
【问题描述】:

我试图循环使用给定参数 From 和 To Date 的 cte。我阅读了这个create while loop 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)

【问题讨论】:

  • 在 Gordon 的建议下发布了我的解决方案。

标签: sql user-defined-functions common-table-expression


【解决方案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)
    )

【讨论】:

  • 只是调整你的声明,它会创建多余的日期。 “其中日期。日期
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-01-01
  • 2022-11-14
  • 2016-10-20
  • 1970-01-01
  • 2015-08-12
  • 1970-01-01
  • 2017-08-09
相关资源
最近更新 更多