2014-09-22 46 views
1

我有如下表:
增加有限行數SQL

ID GroupID Date   Value 
1 A   2014-06-01 20 
2 A   2014-06-02 21 
3 A   2014-06-03 22 
4 B   2014-06-01 50 
5 B   2014-06-02 76 
6 A   2014-06-04 25 
7 C   2014-06-01 70 
8 A   2014-06-05 29 

我想在SQL VIEW以下結果:

ID GroupID Date   Value  RowNumber 
1 A   2014-06-01 20  1 
2 A   2014-06-02 21  2 
3 A   2014-06-03 22  3 
4 B   2014-06-01 50  1 
5 B   2014-06-02 76  2 
6 A   2014-06-04 25  4 
7 C   2014-06-01 70  1 
8 A   2014-06-05 29  5 

但是,我想限制ROWNUMBER場直到24,如果數字達到24,那麼它將從1開始。

有沒有人有一個想法如何做到這一點?
謝謝。

+0

我可以看到從ROWNUMBER 1開始針對每個的GroupID。你想限制每個GroupID爲24嗎? – Raj 2014-09-22 08:36:53

+0

@Raj,是,每組ID – Haminteu 2014-09-22 08:44:58

回答

5

剛纔設置ROWNUMBER列值ROWNUMBER%24 + 1那麼當行數達到24個,然後從1

SELECT (ROW_NUMBER() OVER 
        (PARTITION BY GroupID ORDER BY ID) 
         -1)%24+1 as RowNumber, 
* FROM Table 

啓動,因爲行號從1減去我行號開始-1從開始0

+1

嗨,謝謝。是的,這是邏輯。 – Haminteu 2014-09-22 08:48:35

+0

如果你想我可以發送你的sql代碼完整的選擇查詢 – 2014-09-22 08:49:23

+0

是的,爲什麼不...只是編輯你的答案隊友。欣賞。 – Haminteu 2014-09-22 08:49:55

0

您可以使用解碼函數在SQL中實現此功能。

選擇ID,組ID,日期,數值,解碼器(MOD(ROWNUM,24),0,24,MOD(ROWNUM:一旦到達ROWNUMBER 25,ROWNUMBER再次從1

嘗試執行以下查詢開始,24))從表

0

mod_Val此代碼可以是有益的

with std as (select *,row_number() over(partition by groupid order by groupid,id) as RowNumber 
from table1) 
select * from std order by id 
+0

但必須仔細閱讀問題 – 2014-11-27 08:53:25