본문 바로가기
programming/mssql

row 데이터 합치기

by hotdogya 2013. 1. 17.

원본 : http://ddoung2.tistory.com/327



USE [DBA]

GO

 

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

 

IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[문자열합치기]') AND type in (N'U')) BEGIN

    DROP TABLE [dbo].[문자열합치기]

END

CREATE TABLE [dbo].[문자열합치기](

       [mSeq] [int] NULL,

       [mName] [nvarchar](10) NULL

) ON [PRIMARY]

GO

 

INSERT INTO [문자열합치기] (mSeq, mName) VALUES

(1, '이승연'),

(1, '이승연'),

(1, '이승연'),

(1, '이승연'),

(2, '배수지'),

(2, '배수지'),

(2, '배수지'),

(2, '배수지'),

(2, '배수지'),

(2, '배수지'),

(3, '권보아'),

(3, '권보아'),

(3, '권보아'),

(3, '권보아'),

(4, '박보영'),

(4, '박보영')

 

SELECT * FROM [DBO].[문자열합치기]

 

 

////////////////////////////////////////////////////////

SELECT DISTINCT mSeq,

       STUFF((

            SELECT ',' + mName

            FROM   [DBO].[문자열합치기]

            WHERE  mSeq = A.mSeq

            FOR XML PATH('')

       ),1,1,'') AS mName

FROM   [DBO].[문자열합치기] AS A


///////////////////////////////////////////////////////////


SELECT mSeq,

       STUFF((

            SELECT ',' + mName

            FROM   [DBO].[문자열합치기]

            WHERE  mSeq = A.mSeq

            FOR XML PATH('')

       ),1,1,'') AS mName

FROM   [DBO].[문자열합치기] AS A

GROUP BY mSeq


mysql의 group_concat()의 기능처럼 문자열을 합쳐준다.


성능이 느리다고 한다. 실제 쓸일이 있을때는 고려해봐야 할듯...

'programming > mssql' 카테고리의 다른 글

MSSQL 자동증가 컬럼 테이블 복사  (0) 2013.02.26
insert into select  (0) 2013.02.19
SQL Server 2005의 OVER절  (0) 2012.12.24
시간 형식 함수  (0) 2012.12.24
mysql 조건문 case  (0) 2012.05.08