我有下表:
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 :(得分: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 i开始减去行号-1从0开始
答案 1 :(得分:0)
您可以使用SQL中提供的解码功能来实现此目的。一旦RowNumber达到25,RowNumber将从1开始。
尝试执行以下查询:
从表中选择ID,GroupID,Date,Value,decode(mod(rownum,24),0,24,mod(rownum,24))mod_Val
答案 2 :(得分:0)
此代码可能会有所帮助
with std as (select *,row_number() over(partition by groupid order by groupid,id) as RowNumber
from table1)
select * from std order by id