2013-10-09 2 views
0

У меня есть источник данных из Active Directory в плоском файле, который мне нужно экспортировать на SQL-сервер, используя SSIS. Моя задача состоит в том, что я хочу выполнять все операции в 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

Нечто подобное будет вам запятыми список идентификаторов

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 task, и я надеюсь, что это даст вам выход, как вы показали в своем вопросе. –

1

Я поддерживаю предыдущие предположения, что это плохая модель данных, и я также поддерживаю SQL решения (SSIS не). Однако, если вы должны следовать этому пути, несмотря на наши предупреждения, взгляните на оператор SISS Pivot. Вы должны будете объединить полученные столбцы в один столбец.

Смежные вопросы