--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商务导入主案不存在的订单')