1

在数据流中,我有一个 ADO NET 源,它加载如下表:

PersonID, Email
1, "john@hotmail.com"
1, "john_job@yahoo.com"
2, "susan@gmail.com"
2, "sus2010@hotmail.com"

我需要合并每个人的电子邮件并得到如下结果:

PersonID, EmailsArray
1, "john@hotmail.com,john_job@yahoo.com"
2, "susan@gmail.com,sus2010@hotmail.com"

我该怎么做?使用派生列?脚本组件?一个foreach循环?(在数据流中不存在)。提前致谢。

4

1 回答 1

2

使用具有以下逻辑的异步脚本组件:

  1. 在 ID 列上对数据进行排序。
  2. 在脚本组件中,声明一个跟踪前一个 id 的变量,在脚本末尾将其分配给输入缓冲区的 ID 列。
  3. 对于输入缓冲区中的每一行,将电子邮件字段连接到一个字符串变量。
  4. 检查前一个 ID 是否等于当前 ID(来自您的输入缓冲区)。如果不同,则使用先前的 ID 和连接的字符串向输出缓冲区添加一行。将字符串重置为空。

MSDN

于 2012-12-22T10:40:25.123 回答