如何创建SSIS包以在'where in'子句中提供值

时间:2013-06-13 17:25:51

标签: sql ssis package

对SSIS来说相当新鲜...... 所以这是我的问题陈述 - 我想创建一个执行以下操作的包..

1)将1000个ID(主键)的集合分成100个集合,即100 * 10 2)每次获得的100个值必须动态地输入变量'X' 3)我想在where子句

中使用这个变量

示例: 我有一张桌子,学生以'ID'为主键 我还有一个带有“ID”列的表Rank_Holders 从Rank_Holders中选择*,其中(?)中的ID是我想要做的。 ?表示映射的变量 - 应该有来自学生的ID列表。

实际上我在这里有一个大型数据库,一个来自SQL Server,另一个来自Oracle,而且ID列的数量超过30000,这就是为什么我需要将它拆分成块并输入Where in子句

一步一步的包创建过程真的很有帮助请帮忙。

1 个答案:

答案 0 :(得分:0)

欢迎Newcommer!意识到你是SSIS的新手,我必须告诉你,你的问题陈述虽然不理想是非常具有描述性的。很难用几行来描述整个问题。

我很确定你能够自己找出“一步一步”的部分。我想给你一些一般性的想法。

  1. 主键可以是顺序的,也可以不是顺序的。如果是,那么你很幸运;如果没有,那么你需要使用ROW_NUMBER()。例如:
  2. DECLARE @lower int = 10; DECLARE @upper int = 15;

    - DECLARE @CETList varchar(3000); - 这我是putti

    WITH子集AS (     SELECT ROW_NUMBER()OVER(ORID BY RecordID)AS RowNumber,RecordID     来自#A )

    - SELECT @CETList = COALESCE(@CETList +',','')+ CAST(RecordID AS varchar) --FROM子集 --WHERE RowNumber BETWEEN @lower和@upper;

    - SELECT @CETList; --PRINT @CETList;

    SELECT *来自UserAudit,其中RecordID在(SELECT RecordID FROM subset WHERE RowNumber BETWEEN @lower AND @upper);

    同样,这还不是一个完整的解决方案。请查看并查看它是否对您有所帮助。我将这个放在答案部分,因为我需要比评论部分提供更多的空间。