2017-09-12 6 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 

しかし、あなたはパーティションがちょうどmypartition = 1のすべての値を与えるROWID上のパーティションを推測することができますように私は、構造体に方法がわかりませんよこれを達成するためにpartition by節。

+0

あなたは、与えられたグループ内で最も@segment要素を入れしようとしていますか?つまり、上記の例に基づいて、3つの1と3の2を必要とするように見えます。 –

答えて

5

どの程度

CEILING(ROW_NUMBER() OVER(ORDER BY RowId ASC)/3.0) 
関連する問題