搜索

如何将EXCEL多表中相同列的数据汇总到一张表上

发布网友

我来回答

2个回答

懂视网

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

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

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

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

-- =============================================
-- 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 --代理商ID
AS
DECLARE
	@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 --判断其他费用表是否已写入其他费用值,下面给小计赋值
	BEGIN
	 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

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

热心网友

可以通过“数据”选项下的“合并计算”来完成。
声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。
E-MAIL:11247931@qq.com

热门图文

Top