[原創]SQL表值函數:返回從當前周開始往回的自定義週數

一如往常同樣,一篇簡短博文記錄開發過程當中遇到的一個問題。初衷都是記錄本身的一些Idea,也是但願可以幫助一些湊巧遇到此類需求的問題,這個需求的的開端是由於,要統計最近N周的銷售數據。函數

接下來咱們來看看執行函數的效果以下圖: select  * from  [dbo].[Fn_RunWeek] (-12)3d

image

具體函數以下: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

相關文章
相關標籤/搜索