zoukankan      html  css  js  c++  java
  • [原创]SQL表值函数:获取从当月计算起往前自定义月份数

    今天我现在发现看一篇博文不能够太长,只要能够描述清楚自己想表达的东西,能够让大家知道你要讲什么就行了。因为我今天看了一些长篇博文,真的觉得知识点太多了, 会让人囫囵吞枣。

    这篇博文跟我昨天发表的类似,同样是为了解决一个统计需求,结果是要求返回从当月起往回推算出自定义输入的月份

    喜欢总结的我,为此写了一个表值函数来解决这一需求。现记录一下,也希望能帮助到一些也遇到此类问题的朋友。

    首先我们看一下执行效果图:

    返回最近一年即是十二个月的数据,执行调用函数:SELECT * FROM [Fn_RunMonth](-12)

    image

    具体函数如下:

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

            DECLARE @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编写,格式效果可能不太好。

  • 相关阅读:
    mybatis的mapper特殊字符转移以及动态SQL条件查询
    MySQL查询结果集字符串操作之多行合并与单行分割
    MySQL查询之内连接,外连接查询场景的区别与不同
    SpringBoot异步使用@Async原理及线程池配置
    SpringBoot 属性配置文件数据注入配置和yml与properties区别
    MySQL实战45讲第33讲
    Beta冲刺第1次
    Beta冲刺第5次
    Beta冲刺第4次
    Beta冲刺第3次
  • 原文地址:https://www.cnblogs.com/lhmlyx2723356/p/4217686.html
Copyright © 2011-2022 走看看