2013-10-09 28 views
0

我有一个平面文件中的Active Directory中的数据源,需要使用SSIS将其导出到SQL Server。我的挑战是我想要在SSIS中执行所有操作,并将数据导出到数据库中作为最终输出。我的平面文件有几行轴承需要组合成一排相同的用户名,然后在一列在我的插图串联数据如下:在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 

任何帮助将非常感激。

+1

你是否想听到你真的*真的不想在列中存储分隔列表? – billinkc

+0

查看https://www.google.com/search?q=string+aggregation+tsql,但@billinkc是正确的 - 这仅适用于报告/演示文稿。在数据库中,它应该通过关系来完成。 –

+0

你总是可以得到一个逗号分隔的LocationID列表,但这是一个很差的数据库模型 –

回答

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) 
+0

“我的输出应该如下,它应该全部使用SSIS完成” – billinkc

+0

尝试ExecuteSql任务中的代码,我希望它会给你你在问题中显示的输出。 –

1

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

相关问题