У меня есть таблица, которая выглядит какЛучший способ конкатенации значений столбцов в совокупности
srvc_dt fclity_id clmt_key rfrsh_dt srvc_cd
2013-01-16 000167404 2 2013-01-31 01204
2013-01-16 000167404 2 2013-01-31 11112
2011-01-11 000167404 2488 2013-02-28 11113
2013-01-08 000167404 6070 2013-01-31 11113
2013-01-08 000167404 28371 2013-01-31 01202
2013-01-08 000167404 28371 2013-01-31 11107
2013-01-08 000167404 28371 2013-01-31 11112
2013-01-08 000167404 28371 2013-01-31 11117
2013-01-08 000167404 28371 2013-01-31 12101
2012-07-17 000167404 40571 2013-01-31 11113
2012-11-19 000167404 40571 2013-01-31 11113
2013-01-14 000167404 44189 2013-01-31 27211
2010-07-06 000167404 46396 2013-02-28 01202
2010-07-06 000167404 46396 2013-02-28 02142
2010-07-06 000167404 46396 2013-02-28 11107
2010-07-06 000167404 46396 2013-02-28 11112
2013-01-03 000167404 113264 2013-01-31 01204
2013-01-03 000167404 113264 2013-01-31 23323
2013-01-07 000167404 113390 2013-01-31 01202
2013-01-07 000167404 113390 2013-01-31 02142
, и я хотел бы, чтобы превратить его в нечто вроде
srvc_dt fclity_id clmt_key rfrsh_dt srvc_cd
2010-07-06 000167404 46396 2013-02-28 01202,02142,11107,11112
2011-01-11 000167404 2488 2013-02-28 11113
2012-07-17 000167404 40571 2013-01-31 11113
2012-11-19 000167404 40571 2013-01-31 11113
2013-01-03 000167404 113264 2013-01-31 01204,23323
2013-01-07 000167404 113390 2013-01-31 01202,02142
2013-01-08 000167404 6070 2013-01-31 11113
2013-01-08 000167404 28371 2013-01-31 01202,11107,11112,11117,12101
2013-01-14 000167404 44189 2013-01-31 27211
2013-01-16 000167404 2 2013-01-31 01204,11112
, что будет наиболее производительным (для > 100 000 000 строк), чтобы выполнить это в SQL SERVER 2012?
PIVOT? FOR XML PATH? динамические заявления о случаях? что-то еще?
EDIT: в то время как Simulating group_concat MySQL function in Microsoft SQL Server 2005? делает дисплей 1 способ сделать это, я ищу для сравнения производительности между различными методами
Об этом ответили здесь, а остальная часть Интернета - сотни, если не тысячи раз. PIVOT НЕ поможет, потому что он преобразует сгруппированные данные в столбцы, которые не то, что вы хотите. Метод FOR XML - это то, что вы хотите. –
Возможный дубликат [Имитация группы \ _concat MySQL-функция в SQL Server?] (Http://stackoverflow.com/questions/451415/simulating-group-concat-mysql-function-in-sql-server) –
@SeanLange Я читаю этот другой вопрос перед публикацией, а в то время как FOR XML PATH БЫЛО выполнить это, я считаю, что это очень дорогостоящая техника. PIVOT также может реально сделать это, как только у вас есть сгруппированные данные в столбцы, вы можете объединить их – Traceur