0

我在一个平面文件中有来自 Active Directory 的数据,我需要使用 SSIS 将其导出到 SQL Server。我的挑战是我想在 SSIS 中完成所有操作,并将导出到数据库中的数据作为最终输出。我的平面文件有几行带有相同的用户名,需要合并为一行,然后将数据连接在一列中,如下图所示:

    Username        Office       LocationID    Dept
    --------        ----------   ----------    -----
1.  btan            HQ              01         Acct
2.  cvill           South           04         HR
3.  cvill           North           02         HR
4.  btan            East            03         Acct
5.  cvill           West            05         HR
6.  lkays           HQ              01         Legal

我的输出应该如下,并且都应该使用 SSIS 完成:

    Username        LocationID      Dept
    --------        ----------      -----
1.  btan            01, 03          Acct
2.  cvill           04, 02, 05      HR
6.  lkays           01              Legal

任何帮助将不胜感激。

4

2 回答 2

1

我支持之前的建议,即这是一个糟糕的数据模型,我也支持 SQL(非 SSIS)解决方案。但是,如果您必须不顾我们的警告而遵循此路径,请查看 SSIS Pivot 运算符。您需要将结果列连接成一列。

于 2013-10-10T00:39:05.223 回答
0

像这样的东西会给你一个逗号分隔的ID列表

SELECT Username, STUFF(IDList, 1,2,'') AS LocationID, Dept
FROM TableName T OUTER APPLY 
                            (
                            SELECT ', ' + LocationID  [text()]
                            FROM TableName
                            WHERE UserName = T.UserName
                            FOR XML PATH('')
                            ) T2(IDList)
于 2013-10-09T21:31:04.460 回答