一如往常同样,一篇简短博文记录开发过程当中遇到的一个问题。初衷都是记录本身的一些Idea,也是但愿可以帮助一些凑巧遇到此类需求的问题,这个需求的的开端是由于,要统计最近N周的销售数据。函数
接下来咱们来看看执行函数的效果以下图: select * from [dbo].[Fn_RunWeek] (-12)3d
具体函数以下:blog
-- =============================================
-- 调用: select * from [dbo].[Fn_RunWeek] (-12)
-- Create date: 2015-01-14
-- Description: 返回从这周开始往回的N周数据(一年52周)
-- =============================================
ALTER FUNCTION [dbo].[Fn_RunWeek] (@num INT=-12)
RETURNS @tab TABLE
(
Sale_Year VARCHAR(10) ,
XSDate VARCHAR(10) ,
Sort INT
)
AS
BEGIN
DECLARE @week INT
SELECT @week=DATEPART(wk, GETDATE())
DECLARE @i INT
SET @i=0
WHILE (@i>@num)
BEGIN
INSERT INTO @tab
SELECT [Sale_Year] = YEAR(DATEADD(week, @i, GETDATE())) ,
[XSDate] = DATEPART(wk, (DATEADD(week, @i, GETDATE()))) ,
Sort = @i
SET @i=@i-1
END
RETURN
ENDip若是朋友们以为之后可能会用到的话,欢迎转载,固然也能够推荐一下,谢谢。 开发
PS:此博文是利用Windows Live Writer 2012编写,格式效果可能不太好。 get