大家好,问大家一个问题,现在有一张表里面有姓名(name)、余额万元(bal)两个字段,oracle里面有没有什么函数根据指定条件对返回的记录进行分组啊?分组的意思是每一个数据段都有一个唯一的标识符,比如能不能再增加一个临时字段(temp)方便在程序中调用
比如:
bal temp
0-0.99 0
1-9.99 1
10-19.99 2
20-29.99 3
30-39.99 4
40-40.99 5
>50 6
这么七个组oracle能够实现这样的功能吗,或者大家还有另外的办法,帮帮小弟吧另外有人说可以用 case when then的办法,可是我不太会用,大家帮我想想该怎么写啊,谢谢大家了
比如:
bal temp
0-0.99 0
1-9.99 1
10-19.99 2
20-29.99 3
30-39.99 4
40-40.99 5
>50 6
这么七个组oracle能够实现这样的功能吗,或者大家还有另外的办法,帮帮小弟吧另外有人说可以用 case when then的办法,可是我不太会用,大家帮我想想该怎么写啊,谢谢大家了
row_number()over(order by bal)temp
是这个意思吗
或者在外围来个row_number()over(...)
或者你不嵌套直接加个case when bal <1 then ...
像4楼的一样,只不过把'0-0.99'等等替换成012345
对4楼的结果row_number()
'0'>'-'
因此'10-19.99'>'1-9.99'
其他的更没问题
name bal
a 0.8
b 0.7
c 1.2
返回结果应该是
a 0
b 0
c 1用dense_rank或有可能
name bal
a 0.8
b 0.7
c 1.2
返回结果应该是
a 0
b 0
c 1用dense_rank或有可能
name bal
a 0.8
b 0.7
c 1.2
返回结果应该是
a 0
b 0
c 1用dense_rank或有可能
inthirties老大再帮我想想吧
补充:数据库的名字叫存款余额表(dd_mst)我需要获得 客户姓名(name),余额(bal),产生一个虚列虚列(tmp),而虚列的值就像我上面提到的那样按余额赋值 赋值的规则是如果 bal<1 那么tmp就等于0,它们之间的对应关系如下:
bal temp
0-0.99 0
1-9.99 1
10-19.99 2
20-29.99 3
30-39.99 4
40-40.99 5
>50 6 这样子该怎么写select语句啊?大家帮帮我,这个select语句要返回name,bal,以及咱们生成的那个temp
大家帮我写一下吧
晕,不是替换了,你在case前增加bal,bal就回来了