如何在SSIS中为每个重复的行仅获取一条记录?
我知道使用以下方法在Informatica中如何工作:
但是我不知道如何在SSIS中做到这一点。
答案 0 :(得分:2)
您可能正在寻找Aggregate
中的Data Flow Task
组件。
通常,如果您从数据库中进行采购,我发现最好创建一个查询以仅提取唯一的数据。这样可以节省周围的资源并提高性能。
答案 1 :(得分:0)
除了billinkc提到的内容之外,如果您使用的是SQL-Server / Oracle,则可以通过引入ROW_NUMBER() OVER (PARTITION BY <ID> ORDER BY <ID>
来解决它。这将为ID的唯一行生成1,为重复项生成递增值。
接下来,或者使用WHERE condition = 1
在源SQL中进行过滤,或者在条件为Conditional Split
的SSIS转换中使用row = 1
。
根据问题陈述修改分区并进行排序。
答案 2 :(得分:0)
您可以使用此代码
WITH resultTable AS (
SELECT
RT.*,
LT.MID
FROM MyTable RT
Inner JOIN
(
SELECT SEQ,Max(ID) as MID
FROM MyTable
GROUP BY SEQ
) LT ON RT.SEQ = LT.SEQ AND RT.ID = LT.MID)
select resultTable.* from resultTable
OR 按一定顺序排列行并取第一行,我在下面给出的例子
WITH resultTable AS (
SELECT
RT.*,
ROW_NUMBER() OVER ( PARTITION BY RT.[ColumnForGroupBy]
ORDER BY RT.ID DESC ) AS [ROW NUMBER]
FROM MyTable RT
Inner JOIN
(
SELECT [ColumnForGroupBy]
FROM MyTable
GROUP BY [ColumnForGroupBy]
) LT ON RT.[ColumnForGroupBy] = LT.[ColumnForGroupBy])
select resultTable.* from resultTable
WHERE resultTable.[ROW NUMBER] = 1