oracle 中select into ,group by ,partition,max 等的相关使用【总结】

今天在处理oracle数据库时遇到如下问题,经过一番挣扎,终于搞定:

想要的功能也就是比如文件的版本,有第1,2,3,4版本,我現在要找出所有文件的最大(小)的版本號: 

Specid         specno     specvision

Random11      a            1

Random21      a            2

Random31      a            3

Random12      b            1

Random22      b            2 

結果我想要的是:

Specid         specno       specvision

Random31      a            3

Random22      b            2 

如果單純的求specno ,specvision  也很是容易的

SELECT   max(specvsion) as vision,specno

FROM   table_name

group by  specno

求的:   specno                      vision

             a                                3

             b                                2

但是我更想要的是specid ???

第一次想到用select  Into 解决,并没有成功:

SQL的使用是:  select * into table_Name    from table_name1   where   .......................         table_name 并不存在

oracle的使用是:  create table  (或者是Global temporary table) table_Name  as

                        select * from  ............ where .........

 第二次如下验证是成功的:

select *
from (
      select t_tcm_form_zp.*,row_number()over(partition by specno order by specver desc)rn
      from t_tcm_form_zp
)
where rn=1

做一点解释:row_number() over ( partition by col1 order by col2 desc/asc ) ) as 别名
              表示根据col1分组,在分组内部根据 col2(升/降)排序
              而这个“别名”的值就表示每组内部排序后的顺序编号(组内连续的唯一的)

 

另外:发现一个比较好的SQL语句网站,比较基础的!

      http://www.w3school.com.cn/sql/

转载于:https://www.cnblogs.com/alexzp/archive/2011/12/15/2288814.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值