现在表有两列:
a b
1 1
1 1
1 2
1 3
1 3
2 1
2 1
2 1
select a,b,count(1),row_number() over(order by a) from t group by a,b 得到:
1 1 2 1
1 2 1 2
1 3 2 3
2 1 3 4
现在我想的是当b列值为3是(1 3 2 3)这条数据 的最后一列地 不是在上一行此列的基础上加一,而是加或2 得到(1 3 2 4) 而最后结果为:
1 1 2 1
1 2 1 2
1 3 2 4 (当b=3 是增加2)
2 1 3 5
row_number() over(order by a) 这个只能增加一个, 有什么办法吗??? 跪求! (最好用开窗实现)
a b
1 1
1 1
1 2
1 3
1 3
2 1
2 1
2 1
select a,b,count(1),row_number() over(order by a) from t group by a,b 得到:
1 1 2 1
1 2 1 2
1 3 2 3
2 1 3 4
现在我想的是当b列值为3是(1 3 2 3)这条数据 的最后一列地 不是在上一行此列的基础上加一,而是加或2 得到(1 3 2 4) 而最后结果为:
1 1 2 1
1 2 1 2
1 3 2 4 (当b=3 是增加2)
2 1 3 5
row_number() over(order by a) 这个只能增加一个, 有什么办法吗??? 跪求! (最好用开窗实现)
2 b,
3 ct,
4 rn + sum(case
5 when b = 3 then
6 1
7 else
8 0
9 end) over(order by rownum) n
10 from (select a, b, count(1) ct, row_number() over(order by a) rn
11 from t
12 group by a, b);
A B CT N
---------- ---------- ---------- ----------
1 1 2 1
1 2 1 2
1 3 2 4
2 1 3 5
有没有可能row_number() over(order by a) 换个函数能实现????