У меня есть этот код
DECLARE @cols AS NVARCHAR(MAX), @vals AS NVARCHAR(MAX), @query AS NVARCHAR(MAX)
SELECT @cols = STUFF(( SELECT ',' + x.Name
FROM (
SELECT Name FROM Persons)x
FOR xml PATH(''), TYPE
).value('.','NVARCHAR(MAX)')
,1,1,'')
SELECT @vals = STUFF((SELECT ','+y.Column
FROM (
SELECT CONVERT (varchar, x.Subject) Column FROM subjects x) y
FOR XML PATH (''), TYPE).value('.','NVARCHAR(MAX)'),1,1,'')
SELECT @vals
SET @query = 'SELECT d.id, d.val Column, e.val Value
FROM (SELECT * FROM dbo.Split('''+@cols+''','','')) d,
(SELECT * FROM dbo.Split('''+@vals+''', '','')) e
WHERE d.id = e.id'
, которые преобразуются в отдельную строку с запятыми (WITH STUFF), а затем передают ее в столбец (val), определенный функцией split. Преобразуйте все имена в строку, разделенную запятыми [Пако, Хуан, Пепе, Мария] и верните ее в столбец, НО я хочу, чтобы строка таблицы была разделена запятыми [Пако, Перес, Инглес] [Хуан, Эрнандес, Historia], чтобы потом передать его в колонку. Примерно так:
|ID | Name | LastName | Subject | |ID | Col | Col |
| - | ----- | -------- | --------- | | - | ----- | ------- |
| 1 | Paco | Perez | English | ------>| 1 | Paco | Juan |
| 2 | Juan | Hernandez| History | ------>| 2 | Perez |Hernandez|
| 3 | Pepe | Salas | Spanish | | 3 |English|vHistory |
| 4 | MAria | Cruz | Arts |