2016-12-29 36 views
0

在Sql Server中,我需要重複設置行號並將它們分組爲段或子組。我試圖用Sql實現B列。我已經取得了使用ROW_NUMBER()函數列,但我不知道怎麼去列B.如何將編號的行分爲組

這裏是ROW_NUMBER()的邏輯

1 +((ROW_NUMBER()OVER(爲了通過時間戳,文件名,訂單ID) - 1)%5)AS [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鍵。

編輯:

你的代碼是:

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] 
相關問題