• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

佩特来项目经验小集合(3)___从多表统计金额汇总到一张表

mysql 搞代码 4年前 (2022-01-09) 23次浏览 已收录 0个评论

来这个项目主要是佩特来公司各部门及各代理商使用的系统,这个系统其中的一下功能就是统计代理商费用。费用的统计放在了费用池(传统方式统计代理商费用就叫费用池)数据表中,代理商可以根据费用池的中的金额购买东西,费用池中的钱来自于代理商每次填写的

来这个项目主要是佩特来公司各部门及各代理商使用的系统,这个系统其中的一下功能就是统计代理商费用。费用的统计放在了费用池(传统方式统计代理商费用就叫费用池)数据表中,代理商可以根据费用池的中的金额购买东西,费用池中的钱来自于代理商每次填写的维修鉴定单中。

下面看一下这部分的数据表结构:

下面的存储过程是汇总材料费及其他费用表的费用并汇总到费用池信息表的存储过程,这段代码有点长,加入了各种判断:

-- =============================================-- Author:		马兆娟-- Create date: 2014-7-20 15:32:16-- Description:	统计材费及其他费用汇总到费用池-- =============================================CREATE PROCEDURE [dbo].[PROC_WXJD_CommitFee] 	-- Add the parameters for the stored procedure here	@wxjdId int,   --维修鉴定单ID	@dlsId int     --代理商IDASDECLARE	@Err1 int,  --声明变量,事务使用	@Err2 int,   --声明变量,事务使用	@glf decimal, --管理费	@gsf decimal, --工时费	@xj decimal,   --小计	@totalMoney decimal, --总金额	@count int,  --整型数据	@LJGLF decimal, --零件管理费	@LJGSF decimal, --零件工时费	@QTFY decimal,  --其他费用	@WXJDTotalMoney decimal  --总金额BEGIN	BEGIN TRANSACTION   --开启事务		SELECT @count=0; --给变量赋值    --下面统计其他费用	SELECT @count=count(*) FROM T_DLS_WXJD_Cost_QTFY WHERE FID=@wxjdId	IF @count>0   --判断其他费用表是否已写入其他费用值,下面给小计赋值	BEGI<mark>本文来源gaodaimacom搞#代%码@网-</mark>N	   SELECT @xj = CASE SUM(xj) WHEN null THEN 0 ELSE Sum(xj) END  FROM T_DLS_WXJD_Cost_QTFY WHERE FID=@wxjdId;	END	ELSE	BEGIN	  SELECT @xj=0;	END	--下面是统计材料费	SELECT @count=0;	SELECT @count=count(*) FROM T_DLS_WXJD_Cost_CLF WHERE Fid =@wxjdId	IF @count>0  --判断材料费表是否已写入材料费,下面给管理费、工时费赋值	BEGIN	   SELECT @glf = CASE SUM(GLF) WHEN null then 0 ELSE SUM(GLF) END ,@gsf = CASE SUM(gsf) WHEN null THEN 0 ELSE Sum(gsf) END 		  FROM T_DLS_WXJD_Cost_CLF WHERE Fid =@wxjdId	END	ELSE	BEGIN	 SELECT @glf=0;	 SELECT @gsf=0;	END	--下面给总金额赋值	SELECT @totalMoney = @xj + @glf + @gsf;	  --print @totalMoney;	--下面将从其他费用及材料费中统计的金额写入费用池	SELECT @count =0;	SELECT @count=COUNT(*) FROM T_FeeExist WHERE DLSID = @dlsId;	IF @count>0 --判断费用池表是否已写入某代理商费用,如果已写入过代理商费用,则需向代理商各项费用上添加统计的费用	BEGIN	   SELECT @LJGLF=LJGLF,@LJGSF=LJGSF,@QTFY=QTFY,@WXJDTotalMoney=WXJDTotalMoney FROM T_FeeExist WHERE DLSID = @dlsId;	   SELECT @LJGLF=@LJGLF+@glf;	   SELECT @LJGSF=@LJGSF+@gsf;	   SELECT @QTFY=@QTFY+@xj;	   SELECT @WXJDTotalMoney=@WXJDTotalMoney+@totalMoney;	   UPDATE T_FeeExist SET LJGLF=@LJGLF,LJGSF=@LJGSF,QTFY=@QTFY,WXJDTotalMoney=@WXJDTotalMoney WHERE DLSID = @dlsId;	END	ELSE     --第一次向费用池写入某代理商费用,添加新记录	BEGIN	INSERT INTO	T_FeeExist(DLSID,LJGLF,LJGSF,QTFY,WXJDTotalMoney) values(@dlsId,@glf,@gsf,@xj,@totalMoney);  	END	SET @err1=@@ERROR 		--更新维修鉴定表是否已提交到费用池字段	UPDATE T_DLS_WXJD SET IsFYC='是' WHERE ID=@wxjdId	SET @err2=@@ERROR 		  	   --判断是否出错		IF (@Err1=0 and @Err2=0 )			COMMIT TRANSACTION   --提交事务		ELSE			ROLLBACK TRANSACTION  --事务回滚END

统计费用就简单的介绍到这里了,这里主要记录的关键点就是如何汇总各表的数据及存储过程中对数值进行判断!


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:佩特来项目经验小集合(3)___从多表统计金额汇总到一张表
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址