programing

그룹의 행 번호 증분

iphone6s 2023. 6. 26. 21:08
반응형

그룹의 행 번호 증분

두 개의 'index' 필드가 있는 데이터를 반환해야 하는 SQL Server 2005에 대한 쿼리를 수행하고 있습니다.첫 번째 인덱스 't_index'는 'shade' 열이 변경될 때마다 증가해야 하며, 두 번째 인덱스는 'shade' 열에 있는 값의 파티션 내에서 증가해야 합니다.

t_index s_index shade
1       1       A
1       2       A
1       3       A
1       4       A
1       5       A
2       1       B
2       2       B
2       3       B
2       4       B
2       5       B

s_index 열을 가져오려면 다음을 사용합니다.

Select ROW_NUMBER() OVER(PARTITION BY [shade] ORDER BY [shade]) as s_index

제 질문은 '그림자' 열의 값이 변경될 때 첫 번째 인덱스만 증가하도록 하는 방법입니다.

이는 다음을 통해 달성할 수 있습니다.DENSE_RANK()함수:

  DENSE_RANK() OVER(Order By [shade]) as t_index

사용해 볼 수 있습니다.DENSE_RANK()이를 위해:

SELECT
    shade,
    s_index = ROW_NUMBER() OVER(PARTITION BY [shade] ORDER BY [shade]),
    t_index = DENSE_RANK() OVER (ORDER BY [shade])
FROM dbo.YourTableNameHEre

출력을 제공합니다.

shade  s_index  t_index
  A      1        1
  A      2        1
  A      3        1
  A      4        1
  A      5        1
  B      1        2
  B      2        2
  B      3        2
  B      4        2
  B      5        2

언급URL : https://stackoverflow.com/questions/11116275/increment-row-number-on-group

반응형