MS-SQL 은 커서를 사용하셔야 합니다.
아래 예제를 참고하세요..
--------------------------------------------------------------------------------------------
/*
테스트 테이블 생성 및 데이터 입력
create table TEST(문항int, 답변자varchar(10), 답변내용int)
insert into test values (1,'홍길동',1)
insert into test values (1,'갑돌이',2)
insert into test values (1,'홍길동',3)
insert into test values (2,'홍길동',4)
insert into test values (3,'홍길동',1)
insert into test values (3,'홍길동',2)
insert into test values (3,'홍길동',3)
*/
----------------------------------------------------------------
-- 커서를 사용
----------------------------------------------------------------
-- 결과를입력할임시테이블
create table #temp(문항 int, 답변자 varchar(10), 답변내용 VARCHAR(100))
-- 커서
DECLARE @문항 int, @답변자 varchar(10), @답변내용 int
DECLARE @CNT INT, @복합답변 VARCHAR(100)
DECLARE MYCUR CURSOR FOR
SELECT 문항,답변자,답변내용
FROM TEST
ORDER BY 문항,답변자,답변내용
OPEN MYCUR
FETCH NEXT FROM MYCUR INTO @문항, @답변자, @답변내용
WHILE (@@FETCH_STATUS=0)
BEGIN
SET @CNT= ISNULL((SELECT COUNT(*) FROM #temp WHERE 문항=@문항 AND 답변자=@답변자),0)
IF @CNT=0
BEGIN
INSERT INTO #temp(문항,답변자,답변내용) values (@문항, @답변자, convert(varchar,@답변내용))
END
ELSE
BEGIN
UPDATE #temp
SET 답변내용=답변내용+','+convert(varchar,@답변내용)
WHERE 문항=@문항 AND 답변자=@답변자
END
FETCH NEXT FROM MYCUR INTO @문항, @답변자, @답변내용
END
CLOSE MYCUR
DEALLOCATE MYCUR
--결과가입력된임시테이블조회
SELECT * FROM #TEMP ORDER BY 답변자,문항
결과
문항 답변자 답변내용
----------- ---------- -----------
1 갑돌이 2
1 홍길동 1,3
2 홍길동 4
3 홍길동 1,2,3
출처 : 네이버 지식인
'DataBase > MS-SQL' 카테고리의 다른 글
Cursor in Stored Procedure (0) | 2010.11.03 |
---|---|
MS-SQL 커서(Cursor)를 이용한 쿼리생성 및 쿼리 실행 하기 (0) | 2010.11.03 |
프로시져 암호화 (0) | 2010.09.09 |
[본문스크랩] SQL 강좌 5 (0) | 2010.04.24 |
[본문스크랩] PC에 저장되는 파일을 MS-SQL2005로 가져오기 (0) | 2010.04.24 |