利用游标实现按会计月汇总数据,利用MERGE INTO实现数据库添加或更新
2020-02-02 10:28
1601 查看
CREATE PROCEDURE [dbo].[sys_btainC6] AS Create Table #c6bx ( bmid varchar(100), bm varchar(100), je decimal(28,2), ssgs varchar(300), kjnd varchar(100), kjqj varchar(100) ) BEGIN DECLARE @bmid varchar(50) DECLARE @gs varchar(50) DECLARE @kjnd varchar(50) DECLARE @kjqj int DECLARE kjya CURSOR --定义游标 FOR (SELECT DISTINCT bmid,(jbcsj.dbo.fn_getgs (bmid)) gs,YEAR(bxrq) as kjnd, MONTH(bxrq)as kjqj FROM [c6].[dbo].[cw_fybxcb]a INNER JOIN c6.dbo.cw_fybx b on a.MainID=b.mainid left join c6.dbo.ModuleApproveFlag c on a.mainid=c.id where 1=1 and DelFlag='0' and app_flag='1' and fylx='费用类') --查出需要的集合放到游标中 OPEN kjya --打开游标 FETCH NEXT FROM kjya INTO @bmid,@gs,@kjnd,@kjqj --读取第一行数据 WHILE @@FETCH_STATUS = 0 BEGIN INSERT INTO #c6bx SELECT DISTINCT bmid,bm,sum(je) as je,(jbcsj.dbo.fn_getgs (bmid)) as ssgs,@kjnd as kjnd, @kjqj as kjqj FROM [c6].[dbo].[cw_fybxcb]a INNER JOIN c6.dbo.cw_fybx b on a.MainID=b.mainid left join c6.dbo.ModuleApproveFlag c on a.mainid=c.id where 1=1 and DelFlag='0' and app_flag='1' and fylx='费用类' and bxrq BETWEEN cast((@kjnd+'-'+cast((@kjqj-1) as VARCHAR(2))+ '-26') as date) and cast((@kjnd+'-'+cast(@kjqj as VARCHAR(2))+ '-25')as date) and bmid=@bmid and @gs is not null GROUP BY bm,bmid FETCH NEXT from kjya INTO @bmid,@gs,@kjnd,@kjqj--读取下一行数据 END CLOSE kjya; --关闭游标 DEALLOCATE kjya; --释放游标 MERGE INTO [jbcsj].[dbo].[bmb] USING (SELECT bmid,bm,je,ssgs,kjnd,kjqj FROM #c6bx ) cc ON (bmb.bmid=cc.bmid and bmb.ssgs=cc.ssgs and bmb.kjnd=cc.kjnd and bmb.kjqj=cc.kjqj) WHEN MATCHED THEN UPDATE SET bmb.je=cc.je WHEN NOT MATCHED THEN INSERT([bm], [je], [ssgs], [kjnd], [kjqj], [bmid]) VALUES (cc.bm,cc.je,cc.ssgs,cc.kjnd,cc.kjqj,cc.bmid); drop table #c6bx END
MERGE INTO 目标表 USING 数据源表 ON(0=1) 的用法
转载于:https://www.cnblogs.com/lydg/p/11368748.html
- 点赞
- 收藏
- 分享
- 文章举报
相关文章推荐
- OPC批量添加数据并且批量更新到数据库的实现
- 利用Merge Into 更新表,集合数据到数据库中
- 巧妙使用JQuery Clone 添加多行数据,并更新到数据库的实现代码
- SQL 利用存储过程实现对表数据有则更新无则添加
- 巧妙使用JQuery Clone 添加多行数据,并更新到数据库的实现代码
- 利用JQuery Clone 添加多行数据,并更新到数据库
- JQuery Clone 添加多行数据,并更新到数据库的实现代码
- 巧妙使用JQuery Clone 添加多行数据,并更新到数据库的实现代码
- 利用数据库复制技术 实现数据同步更新
- 稳扎稳打Silverlight(57) - 4.0通信之WCF RIA Services: 概述, 通过 DomainDataSource 实现数据的添加、查询、更新和删除操作
- 利用javascript从数据库取数据来实现CSDN首页图片的切换效果(新增下载地址)
- 连接数据库'2.添加记录'3 更新数据(Access)
- 稳扎稳打Silverlight(57) - 4.0通信之WCF RIA Services: 概述, 通过 DomainDataSource 实现数据的添加、查询、更新和删除操作
- arcengine,深入理解游标Cursors,实现数据的快速查找,插入,删除,更新 (转)
- MSSQL数据同步利用数据库复制技术实现数据同步更新复制的概念
- 使用navicat8通过数据转移实现更新 和 数据库保存实现备份[图文]
- Asp.Net连接Oracle数据库的通用类orahelper.cs并且利用它对数据库查询、汇总、更新等操作演示
- 稳扎稳打Silverlight(57) - 4.0通信之WCF RIA Services: 概述, 通过 DomainDataSource 实现数据的添加、查询、更新和删除操作
- 通过 DomainDataSource 实现数据的添加、查询、更新和删除操作
- 巧妙使用JQuery Clone 添加多行数据,并更新到数据库