728x90

 

-- 임시 테이블 생성
  CREATE TABLE #TEST(
  	CODE	NVARCHAR(1)	NOT NULL, 
  	PAGES	INT			NULL, 
	CONTENT	NVARCHAR(10)	NULL
)

-- 데이터 삽입
INSERT INTO #TEST VALUES ('A', 1, '안녕하세요');
INSERT INTO #TEST VALUES ('A', 2, '오늘은');
INSERT INTO #TEST VALUES ('A', 3, '맑은 날씨입니다.');
INSERT INTO #TEST VALUES ('B', 1, '근데 저는');
INSERT INTO #TEST VALUES ('B', 2, '더워요');

-- 전체 조회
SELECT * FROM #TEST

-- 단계별 TEST
SELECT CONTENT FROM #TEST FOR XML PATH('') -- XML형식으로 한 줄로 출력
SELECT '@' + CONTENT FROM #TEST FOR XML PATH('') -- 태그 없앰

-- STUFF(문자열, 시작점, 길이, 치환문자) : 문자치환함수
-- 맨앞 문자 제거(문자열 관련 함수 쓰면 타입 바껴서 링크 없어짐)
SELECT STUFF((SELECT '@' + CONTENT FROM #TEST(NOLOCK) FOR XML PATH('')), 1, 1, '')

-- 조건 더해준 최종
SELECT DISTINCT
	A.CODE
	, ISNULL(STUFF((
		SELECT ' ' + CONTENT
		FROM #TEST(NOLOCK) 
		WHERE A.CODE = CODE -- 묶을 기준 컬럼
		FOR XML PATH('')), 1, 1, ''), '') 
	AS CONTENT
FROM 
	#TEST A(NOLOCK)

 

728x90