编程中关于本月信息的说明

其实往往本月XXX信息并不能仅仅考虑当前月的信息,例如如下:

请输出本月汽车行驶公里数,在一开始的时候我仅仅考虑取月初和月末的信息相减就可以,之后想想应该用以下脚本:

USE OA
GO

CREATE PROCEDURE P_GET_FUEL_STATISTICS @SUM_XSLC DECIMAL(8,2) OUTPUT, 
										@SUM_JYSL DECIMAL(8,2) OUTPUT,
									    @AVG_PJYJ DECIMAL(8,2) OUTPUT,
										@IN_QCID UNIQUEIDENTIFIER,
										@YEAR INT,
										@MONTH INT
AS
BEGIN

-- 获取每月的行驶里程

DECLARE @LC_START DECIMAL(8,2)
DECLARE @LC_END DECIMAL(8,2)
DECLARE @DATE_START DATETIME
DECLARE @DATE_END DATETIME

-- 获取上一个加油日期
SELECT @DATE_START = MAX(T_QCJY.JYRQ)
FROM T_QCJY
WHERE
T_QCJY.QCID = @IN_QCID AND ((YEAR(T_QCJY.JYRQ) = @YEAR  AND MONTH(T_QCJY.JYRQ) < @MONTH) OR (YEAR(T_QCJY.JYRQ) < @YEAR))

-- 如果没取到值,就取本月初的记录
IF @DATE_START IS NULL
	BEGIN
		-- 获取本月初加油日期
		SELECT @DATE_START = MIN(T_QCJY.JYRQ)
		FROM T_QCJY
		WHERE
			T_QCJY.QCID = @IN_QCID AND YEAR(T_QCJY.JYRQ) = @YEAR  AND MONTH(T_QCJY.JYRQ) = @MONTH 
	END

print @DATE_START

-- 获取本月末加油日期、获取本月加油数总和
SELECT @DATE_END = MAX(T_QCJY.JYRQ), @SUM_JYSL = SUM(JYSL) 
FROM T_QCJY
WHERE
T_QCJY.QCID = @IN_QCID AND YEAR(T_QCJY.JYRQ) = @YEAR  AND MONTH(T_QCJY.JYRQ) = @MONTH 

-- 获取上一个记录
SELECT @LC_START = T_QCJY.DRLC
FROM T_QCJY
WHERE
T_QCJY.QCID = @IN_QCID and T_QCJY.JYRQ = @DATE_START

-- 获取本月末记录
SELECT @LC_END = T_QCJY.DRLC
FROM T_QCJY
WHERE
T_QCJY.QCID = @IN_QCID and T_QCJY.JYRQ = @DATE_END 

-- 获得了本月汽车里程
SELECT @SUM_XSLC = @LC_END - @LC_START

-- 获得本月所有车的平均油价
SELECT @AVG_PJYJ = AVG(T_QCJY.DRYJ)
FROM T_QCJY
WHERE
YEAR(T_QCJY.JYRQ) = @YEAR  AND MONTH(T_QCJY.JYRQ) = @MONTH 

END
GO


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值