2016-11-05 2 views
1

J'ai une table (Id, Code article, StoreCode, Adresse, Numéro) qui contient des entrées dupliquées basées uniquement sur ces colonnes [ArticleCode, StoreCode].SSIS - Filtrer les lignes dupliquées

Actuellement, je peux filtrer les lignes dupliquées en utilisant la transformation Aggregate, mais le problème se situe dans les lignes de sortie. Je n'ai que deux colonnes [Article, StoreCode] et j'ai besoin des autres colonnes.

Répondre

0

Juste dans le composant Source OLEDB utiliser la commande SQL comme source au lieu du nom de table et écrire la commande suivante (comme source):

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 
0

Pour se débarrasser des doublons et sélectionner des enregistrements uniques par [Code de l'article, code de magasin]:

select top 1 with ties 
    Id   , 
    ArticleCode , 
    StoreCode , 
    Adress  , 
    Number 
from 
    YourTable 
order by 
    row_number() over(partition by ArticleCode, StoreCode order by Id) 

Mais lequel des deux dossiers doivent être sélectionnés lorsque [Code de l'article, code de magasin] sont égaux et [Adresse, numéro] diffèrent-ils?

Si Id est auto-incrémenté, alors order by Id obtient le premier enregistrement entré, order by Id desc - le dernier.

Vous devez d'une manière ou d'une autre définir quelle paire [Adress, Number] parmi les doublons est correcte pour être sélectionnée.