Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Как можно свернуть таблицу?  [new]
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]     Ответить | Цитировать Сообщить модератору
 Re: Как можно свернуть таблицу?  [new]
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]     Ответить | Цитировать Сообщить модератору
 Re: Как можно свернуть таблицу?  [new]
NewSQL
Guest
iap, Спасибо.

Именно то, что нужно.
4 мар 15, 15:56    [17342856]     Ответить | Цитировать Сообщить модератору
 Re: Как можно свернуть таблицу?  [new]
hnkovr
Member

Откуда:
Сообщений: 214
Еще есть такая штука: http://lmgtfy.com/?q=sql server concatenation clr
4 мар 15, 16:19    [17343005]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить