Sql Server使用cursor处理重复数据过程详解

/************************************************************ * Code formatted by setyg * Time: 2014/7/29 10:04:44 ************************************************************/ CREATE PROC HandleEmailRepeat AS DECLARE email CURSOR FOR SELECT e.email ,e.OrderNo ,e.TrackingNo FROM Email20140725 AS e WHERE e.[status] = 0 ORDER BY e.email ,e.OrderNo ,e.TrackingNo BEGIN DECLARE @@email VARCHAR(200) ,@firstEmail VARCHAR(200) ,@FirstOrderNO VARCHAR(300) ,@FirstTrackingNO VARCHAR(300) ,@NextEmail VARCHAR(200) ,@@orderNO VARCHAR(300) ,@NextOrderNO VARCHAR(50) ,@@trackingNO VARCHAR(300) ,@NextTrackingNO VARCHAR(50) BEGIN OPEN email; FETCH NEXT FROM email INTO @firstEmail,@FirstOrderNO, @FirstTrackingNO; FETCH NEXT FROM email INTO @NextEmail,@NextOrderNO, @NextTrackingNO; IF @NextEmail!=@firstEmail BEGIN INSERT INTO Email20140725Test ( email ,OrderNo ,TrackingNo ) VALUES ( @firstEmail ,@FirstOrderNO ,@FirstTrackingNO ); SET @@email = @NextEmail; SET @@orderNO = @NextOrderNO; SET @@trackingNO = @NextTrackingNO; END ELSE BEGIN SET @@email = @NextEmail; SET @@orderNO = @FirstOrderNO+'、'+@NextOrderNO; SET @@trackingNO = @FirstTrackingNO+'、'+@NextTrackingNO; END FETCH NEXT FROM email INTO @NextEmail,@NextOrderNO,@NextTrackingNO WHILE @@fetch_status=0 BEGIN IF @NextEmail=@@email BEGIN IF (@NextOrderNO!=@@orderNO) SET @@orderNO = @@orderNO+'、'+@NextOrderNO PRINT 'orderNO:'+@@orderNO IF (@@trackingNO!=@NextTrackingNO) SET @@trackingNO = @@trackingNO+'、'+@NextTrackingNO PRINT 'trackingNO:'+@@trackingNO END ELSE BEGIN INSERT INTO Email20140725Test ( email ,OrderNo ,TrackingNo ) VALUES ( @@email ,@@orderNO ,@@trackingNO ); SET @@email = @NextEmail; SET @@orderNO = @NextOrderNO; SET @@trackingNO = @NextTrackingNO; END FETCH NEXT FROM email INTO @NextEmail,@NextOrderNO, @NextTrackingNO; END CLOSE email; --关闭游标 DEALLOCATE email; --释放游标 END END

时间: 2024-07-30 13:02:25

Sql Server使用cursor处理重复数据过程详解的相关文章

Sql Server使用cursor处理重复数据过程详解_MsSql

/************************************************************ * Code formatted by setyg * Time: 2014/7/29 10:04:44 ************************************************************/ CREATE PROC HandleEmailRepeat AS DECLARE email CURSOR FOR SELECT e.email

JavaScript处理解析JSON数据过程详解_javascript技巧

JSON (JavaScript Object Notation)一种简单的数据格式,比xml更轻巧. JSON 是 JavaScript 原生格式,这意味着在 JavaScript 中处理 JSON 数据不需要任何特殊的 API 或工具包. JSON的规则很简单: 对象是一个无序的"'名称/值'对"集合.一个对象以"{"(左括号)开始,"}"(右括号)结束.每个"名称"后跟一个":"(冒号):"

SQL Server 2008的安全设置技巧方法详解

服务器身份验证 MSSQL Server 2008的身份验证模式有两种:一种是Windows 身份验证模式, 另一种是SQL Server和Windows身份验证模式(即混合模式).对大多数数据库服务器来说,有SQL Server身份验证就足够了,只可惜目前的服务器身份验证模式里没有这个选项,所以我们只能选择同时带有SQL Server和Windows身份验证的模式(混合模式).但这样就带来了两个问题:   1.混合模式里包含了Windows身份验证这个我们所不需要的模式,即设置上的冗余性.程序

Sql server中内部函数fn_PhysLocFormatter存在解析错误详解

前言 有网友指出,SQL Server 2012中fn_PhysLocFormatter内部函数在解析数据行记录位置时存在错误,见:http://www.itpub.net/thread-1751655-1-1.html,实际测试后发现,一是2008R2中同样存在问题,二是不仅页号解析存在问题,槽号解析也存在同样问题. 下面先查看表NT_SiteInfo的数据行记录位置. select SiteID,%%physloc%%,sys.fn_PhysLocFormatter(%%physloc%%)

SQL server打开1433客户连接端口图文详解

客户端找不到或者说不能连接到SQL数据库,大多是因为SQL的1433端口没有打开,或者被防火墙屏蔽了. 在SQL server中打开1433端口很简单:在SQL server 配置管理器中,展开SQL server的网络配置,选中"MSSQLSERVER的协议" ,右击右边的TCP/IP,选属性,进入TCP/IP属性选项卡; 然后选中IP地址选项卡,在其中可以看到TCP端口,默认是1433,最后在"已启用"的下拉选项卡中选中"是",应用-确定就行

sql server 2008 R2删除重复数据的方法

推荐方法3 --方法1: SELECT  * FROM    ( SELECT    Row_Number() OVER ( PARTITION BY [orderno] ORDER BY ( SELECT                                                              0                                                              ) ) AS RowNO ,        

ado-关于基于VS2010,用MFC链接SQL Server 2005 以及实现读写数据的功能

问题描述 关于基于VS2010,用MFC链接SQL Server 2005 以及实现读写数据的功能 希望有程序的大牛们可以发一份给我,我是新手,急急急!再此谢了..最好是用ADO连接的 解决方案 可以看看这几个http://download.csdn.net/download/applev1986/2096097http://download.csdn.net/download/liuxingyihui03/1521720http://download.csdn.net/download/che

为什么这个SQL SERVER 2005 management studio 没有数据导入导出的功能

问题描述 为什么这个SQL SERVER 2005 management studio 没有数据导入导出的功能 解决方案 导出导入的功能在你选择数据库服务器根节点的菜单上. 解决方案二: SQL Server 2005 没有SQL Server Management Studio[已解决]SQL Server 2005 企业版没有 Management Studio管理工具Sql Server2005导入导出表数据

SQL server中多种关键字查询数据

问题描述 SQL server中多种关键字查询数据 比如学生有姓名,学号,班级等列,我可以通过学号查询,也可以通过姓名查询 解决方案 两个办法,一个是首先在代码中判断输入的是全数字还是中文,分别执行不同的查询.或者写在一起:select * from table where 姓名=输入 or 学号=输入 解决方案二: select * from 学生表 where name = '姓名' or No='学号' 解决方案三: 可以使用动态sql拼接比如定义一个@sqltext 根据不同的情况拼接s