随机抽取大量数据 然后在分配到到指定人员中

下面 是一个 例子  这个是要 导出的视图 

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 条件 筛选

 

posted @ 2013-07-19 18:04  史红星-shihongxing  阅读(379)  评论(0编辑  收藏  举报