我在平面文件中从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
任何帮助都会非常感激。
答案 0 :(得分:1)
我支持先前的建议,即这是一个糟糕的数据模型,我也支持SQL(非SSIS)解决方案。但是,如果您必须遵循此路径尽管我们发出警告,请查看SSIS Pivot运算符。您需要将生成的列连接到一列中。
答案 1 :(得分: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)