database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
Oracle
Informix
Sybase
ㆍMS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
MS-SQL Q&A 4389 게시물 읽기
No. 4389
프로시져에서 100개씩 데이타를 읽어서 하나의 Insert문으로 만들기.
작성자
홍성훈(spt48)
작성일
2008-08-11 16:46
조회수
6,668

제목 정하기도 쉽지 않은거 같네요.


다시 설명하면.. 예를 들어서 10,000개의 데이타가 있으면..

이 데이타를 100개씩 짤라서 읽어들여서 100번의 루프를 돌게끔 하고...


100개의 데이터는 하나의 insert문으로 처리하려고 합니다.


select 이름, 전화번호 From Table 을 해서 가져온 

이름과 전화번호를 

이름1/전화번호1;이름2/전화번호2;이름3/전화번호3............;이름100/전화번호100 로 만들고 싶습니다.


좋은 방법있으면.. 리플 부탁드립니다.


감사합니다.

이 글에 대한 댓글이 총 4건 있습니다.

검색을 해보다가..
비슷한 형태를 발견했는데...

100개씩 자르는거는 어떻게 해야할지 모르겠네요..

---------------------------------

declare @str varchar(8000)
set @str = ''


select @str = @str + ltrim(rtrim(rcvName))+'^'+ltrim(rtrim(rcvCtn)) from preSendMsg
select @str

홍성훈님이 2008-08-11 20:46에 작성한 댓글입니다. Edit

이런.. 자답하게 되었네요.
혹시나 싶어서 해봤더니. 되네요.

declare @str varchar(8000)
set @str = ''


select top 2 @str = @str + ltrim(rtrim(rcvName))+'^'+ltrim(rtrim(rcvCtn)) from preSendMsg
select @str

홍성훈(spt48)님이 2008-08-11 20:48에 작성한 댓글입니다.

READ DATA의 루핑을 100번이라는 건 조금 자제하셔야 하지 않을까 싶습니다. 
아래의 예제는 쿼리문을 만들기 위한 루핑입니다. 
그리고 IDNEITYT한 칼럼이 있다고 가정했으며 
@INTLIMIT를 100으로 하시면 100개의 칼럼이 동적으로 생성되는것이 원칙이나 
VARCHAR(8000)의 한계로 문자열이 잘릴 것입니다. 
참고하십시오.


 

IF OBJECT_ID('TEMPDB..#TEST') IS NOT NULL

       DROP TABLE #TEST

      

 

SELECT

       NO = NUMBER

       , CH = LEFT(NEWID(), 4)

INTO #TEST

FROM MASTER.DBO.SPT_VALUES

WHERE TYPE ='P'

AND NUMBER > 0

 

 

DECLARE @STRSQL VARCHAR(8000)

             , @ENTER CHAR(1)

             , @INTLOOP INT

             , @INTLIMIT INT

SET @ENTER = CHAR(13)

SET @INTLOOP = 1

SET @INTLIMIT = 5

SET @STRSQL = 'SELECT RID=CEILING(NO/'+CAST(@INTLIMIT AS VARCHAR) +'),' + @ENTER

WHILE (@INTLOOP <= @INTLIMIT) BEGIN

       SET @STRSQL = @STRSQL + 'NO' + CAST(@INTLOOP AS VARCHAR) + '=MAX(CASE WHEN NO%' + CAST(@INTLIMIT AS VARCHAR) + '=' +CAST(@INTLOOP %5 AS VARCHAR)+ ' THEN NO ELSE NULL END),' + @ENTER

       SET @STRSQL = @STRSQL + 'CH' + CAST(@INTLOOP AS VARCHAR) + '=MAX(CASE WHEN NO%' + CAST(@INTLIMIT AS VARCHAR) + '=' +CAST(@INTLOOP %5 AS VARCHAR)+ ' THEN CH ELSE NULL END),' + @ENTER

       SET @INTLOOP = @INTLOOP + 1

END

SET @STRSQL = LEFT(@STRSQL, LEN(@STRSQL)-2) + ' FROM #TEST GROUP BY CEILING(NO/'+CAST(@INTLIMIT AS VARCHAR)+')'

EXEC(@STRSQL)

 

여리님이 2008-08-12 08:47에 작성한 댓글입니다. Edit

^^;

insert into table1
select TOP 100 from table2;

이걸 좀 응용하시기 바랍니다.

김병석(byung82)님이 2008-08-12 11:49에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
4393스토어드 프로시져 관련 질문입니다. [1]
조동건
2008-08-14
5301
4392access 에서 중복된 값을 지울려면.. [1]
최재환
2008-08-13
6421
4390계층 구조 데이터 조회 시 묶어서 보여주는 방법 [2]
이성재
2008-08-11
5176
4389프로시져에서 100개씩 데이타를 읽어서 하나의 Insert문으로 만들기. [4]
홍성훈
2008-08-11
6668
4388stored procedure만 export 할 수 있나요? [2]
궁금
2008-08-09
6691
4387access에서 날짜 입력해서 해당날짜 데이터 뽑아내기.
데이터 베이서
2008-08-08
4794
4386날짜관련. [1]
불독
2008-08-07
5237
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.038초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다