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 4235 게시물 읽기
No. 4235
FETCH NEXT하면서 누적값을 구하는데 효출적인 방법 없을까요?
작성자
최장군(gospeler)
작성일
2008-05-29 16:26ⓒ
2008-05-29 16:28ⓜ
조회수
4,201

0~10개의 데이터를 구해서 이것을 EQUIP_CUR이라고 명하고
FETCH NEXT로 처리하면서 누적값을 구해서 리턴하는 프로시저 작성중입니다.
아래와 같이 하면....   1개만 있을때도 @idx가 0부터 9까지 다 돌지 않나요?
FETCH NEXT에서 비효율적인것 같은데....   좋은 방법 없을까요? ^^;;

FETCH NEXT FROM EQUIP_CUR INTO @USE_TIME
  WHILE(@@FETCH_STATUS = 0)
  BEGIN

   --PRINT '=====>USE_TIME'
   --PRINT @USE_TIME

   IF @idx = 0
   BEGIN
    SET @RESULT = @RESULT + @USE_TIME
   END
   ELSE
   BEGIN
    IF @idx = 1
    BEGIN
     IF @operation1 = '+'
     BEGIN
      SELECT @RESULT = (@RESULT + @USE_TIME)
     END
     ELSE
     BEGIN
      SELECT @RESULT = (@RESULT - @USE_TIME)
     END
    END
    IF @idx = 2
    BEGIN
     IF @operation2 = '+'
     BEGIN
      SELECT @RESULT = (@RESULT + @USE_TIME)
     END
     ELSE
     BEGIN
      SELECT @RESULT = (@RESULT - @USE_TIME)
     END
    END
    IF @idx = 3
    BEGIN
     IF @operation3 = '+'
     BEGIN
      SELECT @RESULT = (@RESULT + @USE_TIME)
     END
     ELSE
     BEGIN
      SELECT @RESULT = (@RESULT - @USE_TIME)
     END
    END
    IF @idx = 4
    BEGIN
     IF @operation4 = '+'
     BEGIN
      SELECT @RESULT = (@RESULT + @USE_TIME)
     END
     ELSE
     BEGIN
      SELECT @RESULT = (@RESULT - @USE_TIME)
     END
    END
    IF @idx = 5
    BEGIN
     IF @operation5 = '+'
     BEGIN
      SELECT @RESULT = (@RESULT + @USE_TIME)
     END
     ELSE
     BEGIN
      SELECT @RESULT = (@RESULT - @USE_TIME)
     END
    END
    IF @idx = 6
    BEGIN
     IF @operation6 = '+'
     BEGIN
      SELECT @RESULT = (@RESULT + @USE_TIME)
     END
     ELSE
     BEGIN
      SELECT @RESULT = (@RESULT - @USE_TIME)
     END
    END
    IF @idx = 7
    BEGIN
     IF @operation7 = '+'
     BEGIN
      SELECT @RESULT = (@RESULT + @USE_TIME)
     END
     ELSE
     BEGIN
      SELECT @RESULT = (@RESULT - @USE_TIME)
     END
    END
    IF @idx = 8
    BEGIN
     IF @operation8 = '+'
     BEGIN
      SELECT @RESULT = (@RESULT + @USE_TIME)
     END
     ELSE
     BEGIN
      SELECT @RESULT = (@RESULT - @USE_TIME)
     END
    END
    IF @idx = 9
    BEGIN
     IF @operation9 = '+'
     BEGIN
      SELECT @RESULT = (@RESULT + @USE_TIME)
     END
     ELSE
     BEGIN
      SELECT @RESULT = (@RESULT - @USE_TIME)
     END
    END
   END

   SET @idx = @idx + 1
   FETCH NEXT FROM EQUIP_CUR INTO @USE_TIME
  END

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

샘플데이터 DATA에 원하는 포맷을  적어줘보세요. 

CURSOR구조가 아닌 형태로 답변을 주실겁니다.

.님이 2008-05-29 17:31에 작성한 댓글입니다. Edit

sum으로 되지 않는가여^^:

김병석(byung82)님이 2008-05-29 18:39에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
4238ms_sql 쿼리문 마지막 질문 드리겠습니다. [1]
빙승재
2008-05-29
3891
4237ms_sql쿼리 관련 질문드립니다. [1]
빙승재
2008-05-29
3546
4236➀ 문자가 DB에서는 ➀ 라는 문자로 저장되는데 이건 뭔가요?
김남배
2008-05-29
3650
4235FETCH NEXT하면서 누적값을 구하는데 효출적인 방법 없을까요? [2]
최장군
2008-05-29
4201
4234ms_sql에서 카운트 쿼리 질문 [1]
빙승재
2008-05-29
3769
4233Oracle과 LinkedServer연결시 에러 [3]
막무가내
2008-05-29
4428
4232varchar/nvarchar 검색시 like와 padindex
김영수
2008-05-29
3935
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.018초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다