取产品名加小版本最大版的SQL

product表
Product     Version
H1000       1.0
H1000       1.1
H1000       1.2
H1000       2.0
H1000       2.1
H1000       3.0
H1001       1.0
H1001       1.1
…………………………………………
H100X       x.x

有如上所示资料形态的oracle table,按用户需求希望抓取产品名加小版本最大版的资料,如下所示:
Product       Version
H1000        1.2
H1000        2.1
H1000        3.0
H1001        1.1
…………………………………………

本来的想法,截版本小数点左和右两部分,对左部分循环,抓右部分最大值再输出,实际作业的复杂度太高,一句sql完成不了;
后来经提示,使用group by,明显工作量下降很多,这边记录下来做个以后的参考

select c.Product,c.xx1 ||'.'||c.xxx2 as Version from
(select b.Product,b.xx1,max(b.xx2) as xxx2 from
(select Product,substr(Version,1,instr(Version,'.')-1) as xx1,substr(Version,instr(Version,'.')+1) as xx2 from product) b
where b.xx1!='0' group by b.Product,b.xx1) c
order by Product,Version

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值