【问题标题】:Create view with the clause "option" included创建包含“选项”子句的视图
【发布时间】:2016-12-28 13:21:35
【问题描述】:

我正在尝试使用以下 sql 创建视图

   create view v_month_days
   as
   with C(TheDate) as
   (
      select CAST('01/01/2014' AS DATETIME)
      union all
      select dateadd(day, 1, C.TheDate)
      from C
      where C.TheDate < CONVERT(VARCHAR (8), (DATEADD(yy, DATEDIFF(yy,0,getdate()) + 1, -1)),112)
   )
   select
     cast(dateadd(month, datediff(month, 0, C.TheDate), 0) as date) as Month,
     count(*) as DayCount
   from C
   group by dateadd(month, datediff(month, 0, C.TheDate), 0)
   option (maxrecursion 0);

但我收到以下消息:

“消息 156,级别 15,状态 1,过程 v_month_days,第 15 行 [批处理开始行 0] 关键字“选项”附近的语法不正确”

我还有什么其他选择?

【问题讨论】:

    标签: sql-server tsql view


    【解决方案1】:

    首先创建视图,不要使用Option 语句。

    create view v_month_days
        as
        with C(TheDate) as
        (
          select CAST('01/01/2014' AS DATETIME)
          union all
          select dateadd(day, 1, C.TheDate)
          from C
          where C.TheDate < CONVERT(VARCHAR (8), (DATEADD(yy, DATEDIFF(yy,0,getdate()) + 1, -1)),112)
          )
         select cast(dateadd(month, datediff(month, 0, C.TheDate), 0) as date) as Month,
       count(*) as DayCount
       from C
        group by dateadd(month, datediff(month, 0, C.TheDate), 0)
    

    然后当您从视图中选择时,使用Option 语句。

    Select Month, DayCount From v_month_days
    Option (maxrecursion 0);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-06-21
      • 2015-01-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多