sourcecode

SQL 쿼리의 결과 집합에 행 번호 추가

codebag 2023. 7. 2. 19:26
반응형

SQL 쿼리의 결과 집합에 행 번호 추가

나는 간단한 선택 진술서가 있습니다.결과 집합의 행 수를 나타내는 임시 열을 추가하려고 합니다.내가 해봤어,

declare @num int
set @num = 0;
select t.A, t.B, t.C, (@count + 1) as number
from tableZ as t

모든 행에 1을 할당합니다.@count = @count + 1을 시도했지만 작동하지 않았습니다.어떻게 하면 간단한 방법으로 할 수 있을까요?

감사해요.

SELECT
    t.A,
    t.B,
    t.C,
    ROW_NUMBER() OVER (ORDER BY (SELECT 1)) AS number
FROM tableZ AS t

SQLFidle의 작업 예제 참조

물론 행 번호 매기기 순서를 정의할 수도 있습니다. 그렇다면 그냥 스왑하십시오.OVER (ORDER BY (SELECT 1))예를 들어,OVER (ORDER BY t.C)여느 때와 마찬가지로ORDER BY

일반적인 패턴은 다음과 같습니다. 그러나 테이블은 정의상 정렬되지 않은 행의 백이므로 실제로 순서를 적용하는 방법을 정의해야 합니다.특정 순서가 중요하지 않은 경우 이를 수행하는 한 가지 방법은 피복 인덱스의 선행 키, 군집화된 인덱스의 선행 키 또는 임의 그룹의 열 by / order by 절을 사용하는 것입니다.이 경우엔 제 생각엔A의 단일 열 클러스터링 키입니다.t:

SELECT t.A, t.B, t.C, number = ROW_NUMBER() OVER (ORDER BY t.A)
  FROM dbo.tableZ AS t
  ORDER BY t.A;

순서가 중요하지 않은 경우 다음을 사용하여 임의/비결정론적 행 번호를 생성할 수 있습니다.

ROW_NUMBER() OVER (ORDER BY @@SPID)

-- or for serial plans

ROW_NUMBER() OVER (ORDER BY @@TRANCOUNT)

기사에서 폴 화이트로부터 배운 작은 속임수("폴의 해결책" 참조).

질문의 변수가 무엇을 나타내야 하는지 잘 모르겠습니다(일치하지 않음).

언급URL : https://stackoverflow.com/questions/20232641/add-a-row-number-to-result-set-of-a-sql-query

반응형