Значение поля Concat для строки в SQL Server - PullRequest
7 голосов
/ 25 октября 2009

Мне нужна функция, аналогичная Oracle WM_CONCAT в SQL Server, которая возвращает разделенный запятыми список полей, которые вы передаете в качестве аргумента. Например, в Oracle,

select WM_CONCAT(first_name) from employee where state='CA' 

возвращает "Джон, Джим, Боб".

Как я могу сделать это в SQL Server?

Спасибо

Ответы [ 6 ]

3 голосов
/ 25 октября 2009

Фактический ответ:

SELECT
   SUBSTRING(buzz, 2, 2000000000)
FROM
    (
    SELECT 
        firstname
    FROM 
        employee
    WHERE
        State = 'CA'
    FOR XML PATH (',')
    ) fizz(buzz)

Общий вопрос здесь. Некоторые поиски:

2 голосов
/ 14 сентября 2010

Попробуйте это:


    drop table #mike_temp 
go

select * into #mike_temp 
  from (select 'Ken'  as firstname, 'CO' as state
         union all
        select 'Mike' as firstname, 'CO' as state
         union all
        select 'Tom' as firstname , 'WY' as state
       ) a
go

SELECT distinct 
       state
      ,STUFF((SELECT ', ' + b.firstname FROM #mike_temp b where a.state = b.state FOR XML PATH('')),1, 2, '') AS CSVColumn
  from #mike_temp a
1 голос
/ 12 февраля 2018

В SQL Server 2017 добавлена ​​функция STRING_AGG

SELECT t.name as TableName
      ,STRING_AGG(c.name, ';') AS FieldList
  FROM sys.tables t
  JOIN sys.columns c 
    ON t.object_id = c.object_id
  GROUP BY t.name;
0 голосов
/ 21 июня 2012
 SELECT Field1, Substring(Field2, 2, LEN(Field2)) AS Field2 FROM
(
    SELECT
        [InnerData].Field1,
        (SELECT  ',' + Field2 FROM @Fields WHERE Field1=[InnerData].Field1 FOR XML PATH('')) AS Field2
        FROM
        (
            SELECT DISTINCT Field1 FROM @Fields
        ) AS [InnerData]
) AS OuterData

Я получил этот запрос по этой ссылке

См. Эту ссылку для уточнения

0 голосов
/ 28 марта 2012

попробуйте

 select    
    wm_concat(name) 
 from
    employee
 where
    state='CA'
 group by
    state
0 голосов
/ 25 октября 2009

AFAIK, вам нужно сделать это самостоятельно.

Вы можете создать пользовательскую функцию, которая зацикливает курсором записи Employee, где состояние CA и возвращает объединение их имен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...