SQL Server:在视图中声明变量
我已经创建了一个视图,希望有一个滚动的数据范围。我知道视图中不允许使用局部变量,所以我想知道最好的方法是什么。我不想把我的日期添加到我的WHERE中,因为我正在处理大量的数据,因此会显著降低速度SQL Server:在视图中声明变量,sql,sql-server,view,sql-view,Sql,Sql Server,View,Sql View,我已经创建了一个视图,希望有一个滚动的数据范围。我知道视图中不允许使用局部变量,所以我想知道最好的方法是什么。我不想把我的日期添加到我的WHERE中,因为我正在处理大量的数据,因此会显著降低速度 CREATE VIEW uvw_new_view DECLARE @startdate DECLARE @enddate SET @startdate = DATEADD(yy, DATEDIFF(yy, 0, GETDATE()) - 1, 0) -- back 1 year SET @en
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 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;
这是一个很好的例子。用你正在使用的数据库标记你的问题。非常抱歉