2017-09-12 13 views
4

계산 된 열을 얻으려고하는 SQL 서버 테이블이 있습니다. MyPartition - 변수 @segment를 기반으로하는 파티션의 번호를 나타냅니다. 예를 들어, @segment = 3이면 다음 출력이 true입니다.TSql 파티션 및 rownumber를 기반으로하는 열 반환

RowID | RowName | MyPartition 
------ | -----------| ------- 
1  | My Prod 1 | 1 
2  | My Prod 2 | 1 
3  | My Prod 3 | 1 
4  | My Prod 4 | 2 
5  | My Prod 5 | 2 
6  | My Prod 6 | 2 
7  | My Prod 7 | 3 
8  | My Prod 8 | 3 
9  | My Prod 9 | 3 
10  | My Prod 10 | 4 

내가 지금까지 가지고하는 것은 같은 것입니다 :

SELECT 
    RowId, 
    RowName, 
    ROW_NUMBER() OVER(PARTITION BY RowId ORDER BY RowId ASC) AS MyPartition 
FROM MyTable 
ORDER BY RowId 

는하지만 파티션을 추측 할 수처럼 나는를 구성하는 방법을 확실하지 오전 = 1 mypartition의 모든 값을주는 ROWID에 분할 이것을 달성하기위한 partition by 절.

+0

주어진 그룹 내에서 가장 @segment 요소를 넣어하려고 어떻습니까? 즉 위의 예를 기반으로하면 3 개의 1과 3의 2 등이 필요합니다. –

답변

5

어떻게

CEILING(ROW_NUMBER() OVER(ORDER BY RowId ASC)/3.0)