2015-02-03 4 views
2

I select 문에 다음 줄이 : 나는이 권리를 이해하고있는 경우TSQL 해명

cast (row_number() OVER (ORDER BY cs.OrgId) AS int) AS rowId 

누군가가 확인하시기 바랍니다 수 있습니까?

Org Id로 정렬하고 순서대로 orgid 위치의 값을 보유하는 int로 새 열 rowId를 작성 하시겠습니까?

맞습니까?

+4

예, 전체 결과 집합을'OrgId'로 정렬하고 그 결과는 중복되지 않고 1부터 시작하는 순차 번호입니다. 'ROW_NUMBER'의 결과가'BIGINT '이므로'INT '로 캐스팅합니다. – Lamak

답변

2

아니요, 정확히 말하지 않습니다. 함수 row_number() OVER (ORDER BY [order])은 행이 지정된 순서에 따라 정렬 된 경우 행이 차지할 위치를 나타내는 값을 반환합니다. 당신이 다른 기준에 의해 설정 최종 결과를 주문할 수 있습니다 다른 순서 (및 순위 기능)

  • 를 사용하여,

    • 당신이 다른 행 번호 (또는 다른 순위)를 얻을 수 있습니다 :

      이 뉘앙스는 몇 가지 의미 당신이 그것을

    로 할 수있는 무엇이든 당신이 row_number()의 결과 (또는 다른 윈도우 함수)를 사용할 수 있습니다
  • 필터링 할 수있는 row_number() 기능 중 하나, 그룹 별 또는 서로 다른

    cast 부분은 BIGINT에서 INT으로 변환됩니다.

    "새 열을 만듭니다"는 창 기능을 사용하는 위치에 따라 다릅니다. 예를 들어, where 절에서 사용할 수 있습니다.이 경우 절대로 새로운 열을 만들지 않습니다.

    전체 설명과 몇 가지 샘플이있는 documentation on OVER clause을 읽을 수 있습니다. ranking functions docs을 참조하십시오.