随机抽取大量数据 然后在分配到到指定人员中
下面 是一个 例子 这个是要 导出的视图
1 SELECT a.ID, a.APP_NO, '业务预约' AS AppType, 'rv_Appoint' AS ShowInfoTypeName, c.ID AS CustID, c.CustName, c.CallIntoPhone, a.CarMarkName, c.CarNumber 2 FROM dbo.SDTZ_Appoint AS a LEFT OUTER JOIN 3 dbo.SDTZ_Customer AS c ON c.ID = a.CustID 4 WHERE (a.DeleteFlag <> 1) AND (a.Status = '已反馈') 5 UNION ALL 6 SELECT a.ID, a.APP_NO, '业务咨询' AS AppType, 'rv_Consultation' AS ShowInfoTypeName, c.ID AS CustID, c.CustName, c.CallIntoPhone, a.CarMarkName, c.CarNumber 7 FROM dbo.SDTZ_Consultation AS a LEFT OUTER JOIN 8 dbo.SDTZ_Customer AS c ON c.ID = a.CustomerID 9 WHERE (a.DeleteFlag <> 1) AND (a.StatusCode IN (1, 5, 6, 8))
下面是对应的 存储过程 主要功能是 随机抽取 一定量的的 数据 导入到临时表中
ALTER PROCEDURE [dbo].[CteateTempTable] @tblName varchar(1000) --表名 ,@countNum varchar(20) --选取的数量 ,@WhereCondition varchar(300) --选取的数量 ,@output int output AS DECLARE @sql_str nvarchar(4000) DECLARE @TotalCount int BEGIN select @TotalCount=COUNT(*) from sysobjects where xtype='U' and name=@tblName if @TotalCount=1 begin set @sql_str='drop table '+@tblName; EXEC(@sql_str) end set @sql_str='SELECT top '+@countNum+' * into '+@tblName+' FROM [SDTZCallCenter].[dbo].[v_AppReturn] '+@WhereCondition+' order by NEWID()' EXEC(@sql_str) if @@rowcount>0 begin set @output=1; return 1; end else begin set @output=0; return 0; end end
然后 你可以从你的这个 临时表里 进行 条件筛选 然后在 批量分配给 一些具体的人员
列名不一定要相同,只要你在Test 中列出要插入列的列表跟select from Test2 表中的选择的列的列表一一对应就可以了,
当然两边的数据类型应该是兼容的。
比如:insert into Test (fielda,fieldb,fieldc) select fieldx,fieldy,fieldz from Test2
当然 你可以 再加一些限制条件 top 10000或者 where 条件 筛选