SSIS - 过滤重复的行

时间:2016-11-05 13:43:20

标签: sql-server ssis sql-server-data-tools

我有一个表(Id,ArticleCode,StoreCode,Adress,Number),它包含仅基于这些列的重复条目[ArticleCode,StoreCode]。

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

2 个答案:

答案 0 :(得分:0)

就在OLEDB Source组件中,使用SQL Command作为Source而不是Table name,并编写以下命令(作为源代码):

SELECT [ID]
  ,[ArticleCode]
  ,[StoreCode]
  ,[Address]
  ,[Number] FROM (

SELECT [ID]
  ,[ArticleCode]
  ,[StoreCode]
  ,[Address]
  ,[Number]
  ,ROW_NUMBER() OVER(PARTITION BY [ArticleCode]
  ,[StoreCode] ORDER BY [ArticleCode]
  ,[StoreCode]) AS ROWNUM
 FROM [dbo].[Table_1]) AS T1

WHERE T1.ROWNUM = 1

答案 1 :(得分:0)

通过[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]相等且[Adress,Number]不同时,必须选择两条记录中的哪一条?

如果ID为自动递增,则order by Id获取第一个输入的记录order by Id desc - 最后一个。

您已经以某种方式定义了重复项中哪个[地址,数字]对正确无误。