【问题标题】:SQL Server : declare variables in a view [closed]SQL Server:在视图中声明变量[关闭]
【发布时间】:2020-10-06 10:40:27
【问题描述】:

我创建了一个视图,并希望有一个滚动数据范围。我知道视图中不允许使用局部变量,所以想知道最好的方法是什么。我不想在我的WHERE 中使用我的DATEADD,因为我正在处理大量数据,因此会显着减慢速度。

CREATE VIEW uvw_new_view 

DECLARE @startdate
DECLARE @enddate

SET @startdate =  DATEADD(yy, DATEDIFF(yy, 0, GETDATE()) - 1, 0)  -- back 1 year
SET @enddate = DATEADD(yy, DATEDIFF(yy, , GETDATE()) + 4, -1) -- forward 3 years

//stuff 
WHERE startdate >= @startdate AND enddate <= @enddate

提前干杯:)

【问题讨论】:

  • 用您正在使用的数据库标记您的问题。
  • 我非常抱歉

标签: sql sql-server view sql-view


【解决方案1】:

根据语法,您可能正在使用 SQL Server。

您需要一个表值函数。例如,返回某个范围内所有日期的函数:

create function dates (
    @startdate date,
    @enddate date
) 
returns table
as
return
    with cte as (
          select @startdate as dte
          union all
          select dateadd(day, 1, dte)
          from cte
          where dte < @enddate
         )
     select dte
     from cte;

Here 是一个数据库在这个例子中摆弄。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多