Q&A

  • SQL 문장.....?????
sql server에서 쿼리의 결과를 받을때 row의 수를 같이 받고 싶은데요....
오라클에서는 select 할때 rowid(맞나? 넘오래되서)를 result set에 생성할 수 가 있었는데
sql server에서는 어떻게 하는지?????

예를들면 결과가

1                 데이타1          데이타2         데이타3
2                 데이타1          데이타2         데이타3
3                 데이타1          데이타2         데이타3
4                 데이타1          데이타2         데이타3
5                 데이타1          데이타2         데이타3
.
.
.
이렇게 나오게 하고 싶습니다.
맨 왼쪽의 1,2,3,4,5.....이런 결과가 있었으면 하는거죠....

지금은 temp table에 필드를 identity속성으로 만들어서
거기에 insert 한 후에 다시 조회 합니다....

고수님들 도움좀 주세요....^^

5  COMMENTS
  • Profile
    착한천사 2005.02.04 23:53
    ms-sql에는 Oracle의 rownum같은건 없는걸로 알고 있습니다..
    따라서, 순번을 사용하실려면, StoredProcedure를 사용하셔야
    합니다..
    옛날에 했던 기억을 더듬어서... (좀 더듬이가 안 좋긴합니다마는..)
    procedure란의 sql문장을 쓸대

    SET @SEQNO = 0;

    select  @SEQNO+1 순번, 칼럼1, 칼럼2.....
      from 테이블명
    where 조건..

    이렇게 하면, 되었지 않았나? 싶습니다..
    근데, 조금 헥갈리긴 하는데.. MySQL에서도 되었던 것 같은
    느낌이 드네요..
    우쨌든, 위 방법데로 했었던..  가물가물~~ 떠오르네요..
    제 더듬이가 쬐끔 안 좋은관계로 삐딱하게 나올지도 모르겠군요..
    퍽!!, 헉!!
    죄송합니다..
    답이 되었으면 하네요..





  • Profile
    난 백만당적이다. 2005.01.26 01:38




    select rownum, field1, field2 ... from tablename

    하시면 됩니다.



  • Profile
    김현철 2005.01.27 22:51
    invalid column name 'rownum' 하는 에러가 뜨는데요....
    DB는 SQL Server쓰고 있습니다.


  • Profile
    nilriri™ 2005.01.31 04:41
    스토어드 프로시져를 사용하세요.

    제가 아는한^^; ms_sql에서는 오라클의 rownum과 동일한 기능을 하는건 없습니다.

    생각나는데로 적습니다. ms_sql 쿼리 분석기에서 도우말참조해서 디버깅하셔서 사용하세요.

    create procedure sp_getdate
    as
    begin
        begin tran;
        create grobal temporary table #tb_temp (
            rownum int identity,
            컬럼1.....,
            컬럼2.....,
                :
                :
         );

         insert into #tb_temp (컬럼1, 컬럼2,.....)
         select ......   from 테이블
         where 조건...;

         select * from #tb_temp;

         drop table #tb_temp;

         commit tran;
    end;

    #이 붙은 테이블 명칭을 사용하여 메모리상에 임시 테이블을 생성하고.

    rownum이란 컬럼을 identity로 정의하고 데이터를 인서트 하면..

    1씩 증가되는 값이 자동으로 인서트 됩니다..

    이걸 오라클의 rownum처럼 이용하시면 됩니다.

    그럼...


    추가..^^; (도움말 검색 결과입니다. 참고하세요..)

    임시 테이블
    지역 및 전역 임시 테이블을 만들 수 있습니다. 지역 임시 테이블은 현재 세션에서만 볼 수 있으며 전역 임시 테이블은 모든 세션에서 볼 수 있습니다.

    지역 임시 테이블 이름 앞에는 숫자 기호가 하나 추가되고(예: #table_name) 전역 임시 테이블 이름 앞에는 숫자 기호가 두 개 추가됩니다(예: ##table_name).

    SQL 문은 CREATE TABLE 문의 table_name에 대해 지정된 값을 사용하여 임시 테이블을 참조합니다.

    CREATE TABLE #MyTempTable (cola INT PRIMARY KEY)
    INSERT INTO #MyTempTable VALUES (1)





  • Profile
    김현철 2005.02.01 00:05
    제가 지금 사용 하는 방법이네요............
    이 방법밖에 없는 건가보네요...
    어쨋든 감사..  ^^