본문 바로가기
DataBase/MS-SQL

MS-SQL 커서 사용 예제

by 백룡화검 2010. 11. 3.

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

 출처 : 네이버 지식인