получить все значения строк в одной записи


4 принят

используя stuff()с select ... for xml path ('')методом конкатенации .

select col1, col2, col3 = stuff(
  (
  select ','+i.col3
    from t as i
    where i.col1 = t.col1
  for xml path (''), type).value('.','nvarchar(max)')
  ,1,1,'')
from t
group by col1, col2

демо-версия рекстера: http://rextester.com/QXH88855

возвращает:

+------+------+-------------+
| col1 | col2 |    col3     |
+------+------+-------------+
|    1 | roy  | a,f,g,h     |
|    2 | sam  | h,k,l       |
|    3 | joe  | q,w,e,r,t,y |
+------+------+-------------+

2

Если SQL Server 2017 или Vnext или SQL Azure вы можете использовать string_agg

SELECT col1, col2, STRING_AGG(col3, ',') from yourtable
   GROUP BY col1, col2

0

Форматирование вывода действительно должно выполняться в программе, которая принимает данные. Вы можете экспортировать из студии SQL Server Management в csv, выбрав «output to file» на панели инструментов и настроив вывод с разделителями-запятыми.

Если вам действительно необходимо объединить столбцы в отдельное значение, разделенное запятыми:

SELECT CAST(col1 AS NVARCHAR(100)) + N',' + CAST(col2 AS NVARCHAR(100)) + N',' + CAST(col3 AS NVARCHAR(100)) FROM table

SQL, SQL-сервер,

sql,sql-server,

-2

Ответов: 3


4 принят

используя stuff()с select ... for xml path ('')методом конкатенации .

select col1, col2, col3 = stuff(
  (
  select ','+i.col3
    from t as i
    where i.col1 = t.col1
  for xml path (''), type).value('.','nvarchar(max)')
  ,1,1,'')
from t
group by col1, col2

демо-версия рекстера: http://rextester.com/QXH88855

возвращает:

+------+------+-------------+
| col1 | col2 |    col3     |
+------+------+-------------+
|    1 | roy  | a,f,g,h     |
|    2 | sam  | h,k,l       |
|    3 | joe  | q,w,e,r,t,y |
+------+------+-------------+

2

Если SQL Server 2017 или Vnext или SQL Azure вы можете использовать string_agg

SELECT col1, col2, STRING_AGG(col3, ',') from yourtable
   GROUP BY col1, col2

0

Форматирование вывода действительно должно выполняться в программе, которая принимает данные. Вы можете экспортировать из студии SQL Server Management в csv, выбрав «output to file» на панели инструментов и настроив вывод с разделителями-запятыми.

Если вам действительно необходимо объединить столбцы в отдельное значение, разделенное запятыми:

SELECT CAST(col1 AS NVARCHAR(100)) + N',' + CAST(col2 AS NVARCHAR(100)) + N',' + CAST(col3 AS NVARCHAR(100)) FROM table

SQL, SQL-сервер,
Похожие вопросы