Quantcast
Channel: SQL.ru: Microsoft SQL Server
Viewing all articles
Browse latest Browse all 7251

Задача группировки значений столбца в строку

$
0
0
Дано: есть таблица
CREATE TABLE AuthorsInBooks(
id INTEGER identity,
Author_ID INTEGER,
Book_ID INTEGER);

insert into AuthorsInBooks
values (1,1),(1,2),(2,3),(2,4)


id Author_ID Book_ID
1 1 1
2 1 2
3 2 3
4 2 4

Требуется получить из неё следующую таблицу: для каждого автора выводим одну строку, где указано Id автора и список всех id его книг, наподобие:
Author_ID Books
1 1;1;
2 2;2;

Сейчас задача решается при помощи следующего запроса:
select Author_ID 
       ,Books = (select ISNULL( convert(varchar,[Author_ID]) + ';', '')
				   from AuthorsInBooks
				   where  Author_ID = x.Author_ID  for xml path('') 
				)
from (select distinct Author_ID from  AuthorsInBooks) as x


Вопросы:
a) какие есть варианты запроса без использования xml?
b) какие есть варианты запроса с использованием CTE вне зависимости от использования / не использования xml?
c) какие ещё вообще варианты решения есть?

Версия сервера - 2014, редакция - Developer Edition.
CLR не предлагать.

Viewing all articles
Browse latest Browse all 7251

Trending Articles