【发布时间】:2011-11-28 01:40:56
【问题描述】:
我已经使用 UDF 编写了以下 VIEW,但我想知道是否有一种方法可以在不需要 UDF 的情况下执行此操作。我能找到的唯一其他选择是 SELECT UNION 硬编码值,但我不喜欢这样。有什么建议还是我应该保持原样?我使用的是 MS SQL Server 2008 R2,所以任何可用的游戏都是免费的。
CREATE FUNCTION GetN(@N int)
RETURNS @numbers TABLE (N int PRIMARY KEY NOT NULL)
AS
BEGIN
DECLARE @i int
SET @i = 0
WHILE (@i < @N)
BEGIN
INSERT @numbers SELECT @i
SET @i = @i + 1
END
RETURN
END
GO
CREATE VIEW Last10Weeks AS
SELECT DATEPART(wk, GETDATE())-N as WeekNumber
, DATEADD(day, (N*-7) - 1 - (DATEPART(dw, GETDATE()) + @@DATEFIRST - 2) % 7, GETDATE()) AS StartDate
, DATEADD(day, (N*-7) + 5 - (DATEPART(dw, GETDATE()) + @@DATEFIRST - 2) % 7, GETDATE()) AS EndDate
FROM GetN(10)
【问题讨论】:
标签: sql tsql sql-server-2008 user-defined-functions