[原创]SQL表值函数:返回从当前周开始往回的自定义周数

一如往常一样,一篇简短博文记录开发过程中遇到的一个问题。初衷都是记录自己的一些Idea,也是希望能够帮助一些凑巧遇到此类需求的问题,这个需求的的开端是因为,要统计最近N周的销售数据。

接下来我们来看看执行函数的效果如下图: select  * from  [dbo].[Fn_RunWeek] (-12)

image

具体函数如下:

-- =============================================
-- 调用: 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
    END

如果朋友们觉得以后可能会用到的话,欢迎转载,当然也可以推荐一下,谢谢。

PS:此博文是利用Windows Live Writer 2012编写,格式效果可能不太好。

posted @ 2015-01-15 08:34  Mr.Ming  阅读(361)  评论(0编辑  收藏  举报