--SQL批量同步商务数据交易平台 --by ltr --操作提示:运行此脚本前请记得备份您要操作的数据库 --实现功能:执行脚本后数据库中YW_OrderInfo表的记录跟商务的BS_orderInfor记录数相同 --脚本代码开始 declare @OrderID nvarchar(500) -- 游标中取出的 交易平台id declare @OrderNumber nvarchar(500)--游标中取出的 任务单号 declare @SalesMan nvarchar(500)--游标中取出的 销售员 业务员卡号 declare @SwBumen nvarchar(500) --游标中取出的 商务部门,小组号 declare @OrderSource nvarchar(500)--游标中取出的 正常 = 1,无信息员有业务员 = 2,商务回头客 = 3,主案回头客 = 4,工程回头客 = 5,电子商务 = 6 declare @CreateTime nvarchar(500) --游标中取出的 提交时间 SET @CreateTime='2016-03-14' declare @IsMessager nvarchar(500)--游标中取出的 是否有信息员 1-有信息员,0-无信息员 declare @Memo nvarchar(500) -- '2016-03-14商务导入主案不存在的订单' SET @Memo='2016-03-14商务导入主案不存在的订单' --声明游标,这里一定要保证去重,否则会重复插入。 declare mycursor1 cursor for (SELECT DISTINCT OrderNumber,SalesMan,SwBumen,OrderSource,IsMessager from master..YW_OrderInfo0310) --打开游标 open mycursor1 --从游标里取出数据赋值到我们刚才声明的变量中 fetch next from mycursor1 into @OrderNumber,@SalesMan,@SwBumen,@OrderSource,@IsMessager --如果游标执行成功 while (@@fetch_status=0) begin --构造id exec p_getMaxID 'YW_OrderInfo', 'admin', @OrderID OUTPUT PRINT @OrderID EXEC('INSERT INTO YW_OrderInfo(OrderID,OrderNumber,SalesMan,SwBumen,OrderSource,CreateTime,IsMessager,Memo) VALUES('''+@OrderID+''','''+@OrderNumber+''','''+@SalesMan+''','''+@SwBumen+''','''+@OrderSource+''','''+@CreateTime+''','''+@IsMessager+''','''+@Memo+''')') --用游标去取下一条记录 fetch next from mycursor1 into @OrderNumber,@SalesMan,@SwBumen,@OrderSource,@IsMessager end --关闭游标 close mycursor1 --撤销游标 deallocate mycursor1 --脚本代码结束 ----待导入的商务数据是否有重复 --SELECT * FROM master..YW_OrderInfo0310 WHERE ordernumber IN ( --SELECT ordernumber FROM ( --SELECT COUNT(1) tot,ordernumber FROM master..YW_OrderInfo0310 GROUP BY OrderNumber) t WHERE tot>1 ) AND LEN(ordernumber)>0 --SELECT TOP 1 orderNumber,u.u_kahao,u.u_bumen_zi --,case when o.NewOrderType=1 then 3 -- when o.NewOrderType=2 then 4 -- when o.NewOrderType=3 then 5 -- when o.NewOrderType=4 then 6 -- when o.NewOrderType=0 and b.ID is not null then 1 -- when o.NewOrderType=0 then 2 end OrderSource,o.decorateTime -- ,case when o.NewOrderType=0 and b.ID is not null then 1 when o.NewOrderType=0 then 0 end IsMessager -- ,'2016-03-11商务导入主案不存在的订单' Memo -- FROM BusinessSERVER.BusinessSystemDB.dbo.BS_orderInfor o -- left join BusinessSERVER.BusinessSystemDB.dbo.BS_inforAssistant b on o.assistantID=b.ID and o.tb_diqu=b.tb_diqu -- left join BusinessSERVER.BusinessSystemDB.dbo.BS_swb_userList u on u.ID=o.salesManID and u.tb_diqu=o.tb_diqu -- where o.assistantID<=0 and b.ID is NULL and u.ID is not null --SELECT COUNT(1),ordernumber FROM YW_OrderInfo GROUP BY ordernumber --select * FROM YW_OrderInfo WHERE memo LIKE ('2016-03-14商务导入主案不存在的订单') --delete FROM YW_OrderInfo WHERE memo LIKE ('2016-03-14商务导入主案不存在的订单')