我使用了一个UDF编写了下面的VIEW,但我想知道是否有一种不需要UDF的方法。我唯一找到的其他选项是选择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)