[原创]SQL表值函数:获取从当月计算起往前自定义月份数
今天我现在发现看一篇博文不能够太长,只要能够描述清楚自己想表达的东西,能够让大家知道你要讲什么就行了。因为我今天看了一些长篇博文,真的觉得知识点太多了, 会让人囫囵吞枣。
这篇博文跟我昨天发表的类似,同样是为了解决一个统计需求,结果是要求返回从当月起往回推算出自定义输入的月份
喜欢总结的我,为此写了一个表值函数来解决这一需求。现记录一下,也希望能帮助到一些也遇到此类问题的朋友。
首先我们看一下执行效果图:
返回最近一年即是十二个月的数据,执行调用函数:SELECT * FROM [Fn_RunMonth](-12)
具体函数如下:
-- =============================================
-- 调用:SELECT * FROM [Fn_RunMonth](-12)
-- Create date:2015-01-12
-- Description: 获取从当月计算起往前 @num 月,返回Table
-- =============================================
CREATE FUNCTION [dbo].[Fn_RunMonth] (@num INT=-12)
RETURNS @tab TABLE
(
Sale_Year VARCHAR(10) ,
XSDate VARCHAR(10) ,
Sort INT
)
AS
BEGINDECLARE @i INT
SET @i=0
WHILE (@i>@num)
BEGIN
INSERT INTO @tab
SELECT [Sale_Year] = YEAR(DATEADD(month, @i, GETDATE())) ,
[XSDate] = MONTH(DATEADD(month, @i, GETDATE())) ,
Sort = @i
SET @i=@i-1
END
RETURN
END如果朋友们觉得以后可能会用到的话,欢迎转载,当然也可以推荐一下,谢谢。
PS:此博文是利用Windows Live Writer 2012编写,格式效果可能不太好。