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 3901 게시물 읽기
No. 3901
오라클의 시퀸스처럼 구현하는 방법..
작성자
조재원
작성일
2007-12-03 11:22
조회수
4,467

오라클에서는 시퀸스를 만들고 조회할때 
SELECT TRSEQ.NEXTVAL , AA , BB 
    FROM TABLENAME

이런식으로 하여 조회된 값들의 고유번호를 지정하였습니다. 

그리고 나서 이 데이터들로 작업을 하였습니다. 

그런데 MS-SQL의 경우도 
SELECT TRSEQ.NEXTVAL , AA , BB 
    FROM TABLENAME
식으로 조회하여 작업을 하여야 됩니다. 
어떤식으로 구현을 하여야 되는지 도저히 모르겠습니다. 
답변좀 부탁드립니다. 

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

 

if object_id('testTB') is not null

       drop table testTB

go

 

create table testTB

       (a int identity(1,1)

       , b varchar(10) default 'aaa')

go

 

--run 2 or more

insert into testTB default values

go

 

 

select * from testTB

/*

a           b

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

1           aaa

2           aaa

 

(2 row(s) affected)

*/

 

 

SELECT

       NEXT_VAL = IDENT_CURRENT('TESTTB') + 1

 

.님이 2007-12-03 12:30에 작성한 댓글입니다. Edit

답변 정말 감사합니다. 
그런데 한가지 더 질문사항이 있습니다. 

예로써
SELECT convert(varchar, IDENT_CURRENT('TESTTB') + 1)+','+'0000000100,AWH_SKU_MFC,'+JOBSEQ+','+SKU+','+DESCR+','+CONVERT(VARCHAR, OD)+','+CONVERT(VARCHAR, RD)+','+CONVERT(VARCHAR, INDTH)+','+CONVERT(VARCHAR, SW)+','+CONVERT(VARCHAR, WEIGHT)+','+CONVERT(VARCHAR, MSH)+','+CONVERT(VARCHAR, TRUNPAT)+','+TRUNTYPE+','+ADDTIME+','+EDITTIME+','+RCVFLAG+','+IFFLAG+','
  FROM AWH_SKU_MFC, TESTTB
 WHERE IFFLAG = 'N'
조회하게되면 

2,0000000100,AWH_SKU_MFC,0000008459,1000113,T175/65R14T          04827  LBC-
2,0000000100,AWH_SKU_MFC,0000008460,1000113,T175/65R14T          04827  LBC-
2,0000000100,AWH_SKU_MFC,0000008461,1000113,T175/65R14T          04827  LBC-
2,0000000100,AWH_SKU_MFC,0000008462,1000113,T175/65R14T          04827  LBC-
식으로 데이터가 조회가 되는데요..

저는 앞의 2부분이 키값처럼 순차적으로 증가되어 조회되게 하려고 합니다. 
2,0000000100,AWH_SKU_MFC,0000008459,1000113,T175/65R14T          04827  LBC-
3,0000000100,AWH_SKU_MFC,0000008460,1000113,T175/65R14T          04827  LBC-
4,0000000100,AWH_SKU_MFC,0000008461,1000113,T175/65R14T          04827  LBC-
5,0000000100,AWH_SKU_MFC,0000008462,1000113,T175/65R14T          04827  LBC-


이런식으로 되어야 작업이 되는데 도저히 어떤식으로 해야될지 모르겠습니다. 
다시한번 답변 부탁들립니다. 


참고로 오라클에서는 
SELECT ltrim(TO_CHAR(TRSEQ.NEXTVAL, '0000000000'))||'↑'||'AWH_SKU_MFC'||'↑'||JOBSEQ||'↑'||SKU||'↑'||DESCR||'↑'||OD||'↑'||RD||'↑'||INDTH||'↑'||SW||'↑'||WEIGHT||'↑'||MSH||'↑'||TRUNPAT||'↑'||TRUNTYPE||'↑'||ADDTIME||'↑'||EDITTIME||'↑'||RCVFLAG||'↑'||IFFLAG||'↑'
  FROM AWH_SKU_MFC
 WHERE IFFLAG = 'N'
식으로 처리하였습니다. 
0000000144↑AWH_SKU_MFC↑0000003799↑1002629↑T205/80R16S RF      ... 
0000000145
↑AWH_SKU_MFC↑0000003787↑2600132↑T650-14                  ...    
0000000146↑AWH_SKU_MFC↑0000003797↑2001373↑TLT265/70R16         ...  
같은것을 다시조회한다면 
0000000147↑AWH_SKU_MFC↑0000003799↑1002629↑T205/80R16S RF      ... 
0000000148
↑AWH_SKU_MFC↑0000003787↑2600132↑T650-14                  ...    
0000000149↑AWH_SKU_MFC↑0000003797↑2001373↑TLT265/70R16         ...  
게 조회됩니다.

이렇게 MS-SQL에서도 구현을 하려고 합니다.  
도저히 어떻게 해야될지 모르겠어요...

조재원님이 2007-12-03 13:38에 작성한 댓글입니다.
이 댓글은 2007-12-03 14:14에 마지막으로 수정되었습니다. Edit

oracle의 nextVal의 개념이 아니군요. 

그건 단순히 증가시킨 결과를 보여주고자 하는 거라면 
select 
*
, idx = identity(int)
into 
temp_table
from
....

아니면 rank를 구현해보셔야 할 듯하네요

.님이 2007-12-03 14:02에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
3904[SQL->Oracle]trigger로 table 동기화
박신정
2007-12-03
3573
3903현재 월의 주 구하기 [2]
건방진연이
2007-12-03
4038
3902저장프로시저에서 처리되지 않는 UPDATE문이 있습니다..
MC02
2007-12-03
3470
3901오라클의 시퀸스처럼 구현하는 방법.. [3]
조재원
2007-12-03
4467
3899이건또왜안되는지.. [1]
유성만
2007-12-01
3190
3898한개의필드로 출력하기 [2]
유성만
2007-12-01
3047
3897검색시 외부 조건을 사용하는 것이 가능한가요?
윤성진
2007-12-01
2740
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.019초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다