Sql server SSIS-筛选重复行

Sql server SSIS-筛选重复行,sql-server,ssis,sql-server-data-tools,Sql Server,Ssis,Sql Server Data Tools,我有一个表(Id、ArticleCode、StoreCode、Address、Number),其中包含仅基于这些列[ArticleCode、StoreCode]的重复条目 目前,我可以使用聚合转换过滤重复行,但问题在于输出行中我只有两列[Article,StoreCode],我还需要其他列。仅在OLEDB源组件中,使用SQL命令作为源,而不是表名,并编写以下命令(作为源): 仅在OLEDB源组件中,使用SQL命令作为源而不是表名,并编写以下命令(作为源): 要通过[ArticleCode,Sto

我有一个表(Id、ArticleCode、StoreCode、Address、Number),其中包含仅基于这些列[ArticleCode、StoreCode]的重复条目


目前,我可以使用聚合转换过滤重复行,但问题在于输出行中我只有两列[Article,StoreCode],我还需要其他列。

仅在OLEDB源组件中,使用SQL命令作为源,而不是表名,并编写以下命令(作为源):


仅在OLEDB源组件中,使用SQL命令作为源而不是表名,并编写以下命令(作为源):


要通过[ArticleCode,StoreCode]清除重复记录并选择唯一记录,请执行以下操作:

select top 1 with ties
    Id          , 
    ArticleCode , 
    StoreCode   , 
    Adress      , 
    Number
from
    YourTable
order by
    row_number() over(partition by ArticleCode, StoreCode order by Id)
但是当[ArticleCode,StoreCode]相等而[Address,Number]不同时,必须选择两个记录中的哪一个

如果Id为自动递增,则
按Id排序
获取第一条输入的记录,
按Id排序
-最后一条记录


您必须以某种方式定义副本中正确选择的[Address,Number]对。

要消除副本并通过[ArticleCode,StoreCode]选择唯一记录,请执行以下操作:

select top 1 with ties
    Id          , 
    ArticleCode , 
    StoreCode   , 
    Adress      , 
    Number
from
    YourTable
order by
    row_number() over(partition by ArticleCode, StoreCode order by Id)
但是当[ArticleCode,StoreCode]相等而[Address,Number]不同时,必须选择两个记录中的哪一个

如果Id为自动递增,则
按Id排序
获取第一条输入的记录,
按Id排序
-最后一条记录

您必须以某种方式定义副本中正确选择的[Address,Number]对