복붙노트

[SQL] 2000 SQL 서버에 SQL 서버 ROW_NUMBER ()?

SQL

2000 SQL 서버에 SQL 서버 ROW_NUMBER ()?

나는 내가 그것을 최소 및 최대 제한을 제공하여 데이터베이스 테이블에서 레코드를 얻을 수있는 쿼리가 있습니다.

그것은 다음과 같이 간다 :

  SELECT T1.CDUSUARIO, T1.DSALIAS, T1.DSNOMBRE_EMPRESA, T1.DSCARGO, T1.DSDIRECCION_CORREO, T1.CDUSUARIO_ADMINISTRADOR, T1.FEMODIFICACION 
    FROM (SELECT *, 
               ROW_NUMBER() OVER (ORDER BY CDUSUARIO) as row FROM TBL_USUARIOS ) as T1 
   WHERE row > @limiteInf 
     and row <= @limiteSup 
ORDER BY DSALIAS ASC;

지금, 그것은 SQL Server 2005 및 SQL Server 2008의 하늘처럼 작동하지만 SQL Server 2000 데이터베이스에서 실행하려고 다음과 같이 말한다 :

어떡해??

해결법

  1. ==============================

    1.어느 솔루션에 의해 파티션을 지원합니다

    어느 솔루션에 의해 파티션을 지원합니다

    아마 더 나쁘다 루프 또는 커서 기반 솔루션을 언급 한 적이 없다

    편집 5월 20일 20011

    마 삽입 된 레코드 항상 연속 ID 값을 수신 : IDENTITY가 작동하지 않습니다 이유의 예 데모

  2. ==============================

    2.나는이 스레드가 조금 오래 알고 있지만 같은 솔루션을 찾고 다른 사람을 위해, 나는이 문제에 대한 좋은 해결책이 있다는 것을 알고 도움이 될 것이라 생각합니다.

    나는이 스레드가 조금 오래 알고 있지만 같은 솔루션을 찾고 다른 사람을 위해, 나는이 문제에 대한 좋은 해결책이 있다는 것을 알고 도움이 될 것이라 생각합니다.

    여기에 원래 링크를 참조하시기 바랍니다

    링크를 클릭하고 싶지 않은 사람들을 위해, 나는 복사 아래 코드를 붙여 넣은. 또, 신용은 원래 출판사로 이동

    여기에 하나의 열을 기준으로 그룹화 기록의 최신 버전을 선택하는 SQL 서버 2000 SQL 아래입니다.

    SELECT *
      FROM (
        SELECT *, (
          SELECT COUNT(*)
            FROM MyTable AS counter
          WHERE counter.PartitionByColumn = MyTable.PartitionByColumn
            AND  counter.OrderByColumn >= MyTable.OrderByColumn
          ) AS rowNumber
        FROM MyTable
      ) AS r1
      WHERE r1.rowNumber = 1
    

    SQL Server 2005의 동일한 코드는 다음과 같을 것이다 :

    SELECT * FROM (SELECT *, ROW_NUMBER() OVER(PARTITION BY PartitionByColumn 
        ORDER BY OrderByColumn DESC) AS rowNumber FROM MyTable) AS rw1 
      WHERE rw1.rowNumber = 1
    
  3. ==============================

    3.다른 함수를 사용하거나 데이터베이스를 업그레이드합니다. ROW_NUMBER는 데이터베이스의 2000 버전에서 다시 존재하지 않았다. 포인트. 아무것도 당신이 그것에 대해 할 수 없습니다.

    다른 함수를 사용하거나 데이터베이스를 업그레이드합니다. ROW_NUMBER는 데이터베이스의 2000 버전에서 다시 존재하지 않았다. 포인트. 아무것도 당신이 그것에 대해 할 수 없습니다.

  4. ==============================

    4.이 문제에 대한 내 솔루션입니다 :

    이 문제에 대한 내 솔루션입니다 :

    declare @i int
    declare @t table (row int, stuff varchar(99))
    insert into @t
    select 0,stuff from mytable -- <= your query
    set @i=0
    update @t set row=@i, @i=@i+1
    select * from @t
    

    설명:

    내가 선택 문에서 변수를 사용하지 않는 이유 당신은 요청할 수 있습니다? 그것은 간단 할 것입니다 있지만 어떤 결과가없는 경우에만 허용하지 않는다. 이 업데이트에 그것을 할 괜찮아요.

  5. from https://stackoverflow.com/questions/4081753/sql-server-row-number-on-sql-server-2000 by cc-by-sa and MIT license