Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
NewSQL
Guest |
Здравствуйте. Может кто-нибудь из уважаемых посетителей форума сталкивался с подобной задачей и сможет подсказать ответ. Версия СУБД - SQL Server 2008 R2. Дана таблица из трех колонок: room person position D10 CLARK 2 D10 KING 1 D10 MILLER 3 D20 SMITH 4 D20 ADAMS 5 D20 FORD 2 D20 SCOTT 3 D20 JONES 1 D30 ALLEN 3 D30 BLAKE 5 D30 MARTIN 1 D30 JAMES 6 D30 TURNER 2 D30 WARD 4 1) Таблицу необходимо свернуть по колонке "room" так, чтобы соответствующие значения колонки "person" были перечислены в строке. 2) Имеет значение в каком порядке должны быть перечислены значения. Для определения порядка существует колонка "position". Результат должен быть таким: room list D10 KING (1), CLARK (2), MILLER (3) D20 JONES (1), FORD (2), SCOTT (3), SMITH (4), ADAMS (5) D30 MARTIN (1), TURNER (2), ALLEN (3), WARD (4), BLAKE (5), JAMES (6) |
4 мар 15, 15:40 [17342771] Ответить | Цитировать Сообщить модератору |
iap Member Откуда: Москва Сообщений: 47052 |
NewSQL, FAQ не смотрели? SELECT DISTINCT room,list= STUFF ( ( SELECT ', '+TT.person FROM T TT WHERE TT.room=T.room ORDER BY TT.position FOR XML PATH(''),TYPE ).value('.','varchar(max)') ,1,2,'' ) FROM T; |
4 мар 15, 15:46 [17342805] Ответить | Цитировать Сообщить модератору |
NewSQL
Guest |
iap, Спасибо. Именно то, что нужно. |
4 мар 15, 15:56 [17342856] Ответить | Цитировать Сообщить модератору |
hnkovr Member Откуда: Сообщений: 214 |
Еще есть такая штука: http://lmgtfy.com/?q=sql server concatenation clr |
4 мар 15, 16:19 [17343005] Ответить | Цитировать Сообщить модератору |
Все форумы / Microsoft SQL Server | ![]() |