2016-12-29 17 views
0

Sql Serverでは、行番号のセットを繰り返し、セグメントまたはサブグループにグループ化する必要があります。私はSqlを使用して列Bを達成しようとしています。私はROW_NUMBER()関数を使用して列を達成したが、私はROW_NUMBERのためのロジックは、()番号付きの行をグループにグループ化する方法

1 +((ROW_NUMBER()オーバー(ある列B.ここ

に取得するかどうかはわかりませんタイムスタンプ、ファイル名、受注)によって順 - 1)%5)ROW_NUMBER]

enter image description here

+1

編集ご質問や、あなたが 'ROW_NUMBERを()'計算するために使用されるコードを示しています。 –

+0

ありがとうございました。私はより多くの情報を追加しました。 – Bob

答えて

2

としてのrow_number()の形式のものである:

row_number() over (partition by colA order by colB) 

義和あなたがしたいように見えるtは次のとおりです。

dense_rank() over (order by colA) 

row_number()に使用するパーティション・キー(s)はdense_rank()ためorder byキーである必要があり、すなわち。

EDIT:

あなたのコードは次のとおりです。この場合、

1 + ((row_number() over (order by TimeStamp, FileName, OrderID) - 1) % 5) AS [Row_Number] 

、何partition byはありません。あなたは本当に単純に整数除算をしたいのですか?これは簡単です:

1 + ((row_number() over (order by TimeStamp, FileName, OrderID) - 1)/5) AS [Row_Number] 
+0

どのような美しいもの!ありがとう! – Bob

0

私は簡単な解決策となるだろう:

SELECT [Row_Number], GroupNumber 
FROM (
    SELECT [Row_Number] 
     , row_number()over(partition by [Row_Number] order by [Row_Number]) as GroupNumber 
     --Note: The order by clause above should be replaced with however you are ordering the groups of row numbers) 
    FROM YourTableOrInlineView 
    ) z 
ORDER BY GroupNumber, [Row_Number] 
関連する問題