복붙노트

[SQL] SQL Server의 문자열 CONCAT 필드 값

SQL

SQL Server의 문자열 CONCAT 필드 값

나는 당신이 인수로 전달 어떤 필드의 쉼표로 구분 된 목록을 반환 SQL 서버, 오라클 WM_CONCAT에 유사한 기능이 필요합니다. 예를 들어, 오라클,

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

반환 "존, 짐, 밥".

어떻게 SQL 서버에서이 작업을 수행 할 수 있습니까?

감사

해결법

  1. ==============================

    1.실제 답 :

    실제 답 :

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

    여기에 일반적인 질문입니다. 일부 검색 :

  2. ==============================

    2.이 시도:

    이 시도:

    
        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
    
  3. ==============================

    3.SQL 서버 2017 STRING_AGG 기능이 추가되었습니다

    SQL 서버 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;
    
  4. ==============================

    4.AFAIK, 당신은 스스로 그것을 할 필요가있다.

    AFAIK, 당신은 스스로 그것을 할 필요가있다.

    당신은 사용자 정의 함수를 만들 수있는 커서 루프 상태가 CA이며, 자신의 이름의 연결을 반환 직원의 기록.

  5. ==============================

    5.

     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
    

    나는이 링크에서이 쿼리를 가지고

    더 명확한 설명이 링크를 참조하십시오

  6. ==============================

    6.이 시도

    이 시도

     select    
        wm_concat(name) 
     from
        employee
     where
        state='CA'
     group by
        state
    
  7. from https://stackoverflow.com/questions/1621747/concat-field-value-to-string-in-sql-server by cc-by-sa and MIT license