实例说明: table 中的资料如图所示:
需要查询出所有part_no,ver 值更大的那笔资料。以上图的table数据为例,需要SQL语句一次性查询出part_no: 0899020234 ver:2 和part_no:0805260612 var:2 的这两笔数据。
有两种方法可以实现:
第一种,用 max(VER) over( partition by PART_NO) xx 方法,先以part_no 做为区分(相当于group by part_no),在从区分后的数据中得到最大的VER,给它命名 xx 字段。
在外层通过比对VER字段和xx字段即可.
具体SQL 如下:
select查询结果:
PART_NO,N_WEIGHT_U,N_WEIGHT_UNIT, N_RATE,VER
from (
SELECT DISTINCT PART_NO,
N_WEIGHT_U,
N_WEIGHT_UNIT,
N_RATE,
VER,
max(VER) over( partition by PART_NO) xx
FROM EC_SP_PART_APPLY
)
where VER = xx
第二种方法比较笨一点,但是更容易懂,看下SQL语句就懂了。
select
c.part_no,
c.N_WEIGHT_U,
c.N_WEIGHT_UNIT,
c.N_RATE,
c.VER
from
(select part_no, max(ver) as ver
from (SELECT DISTINCT PART_NO,N_WEIGHT_U,N_WEIGHT_UNIT,N_RATE,VER FROM EC_SP_PART_APPLY )
group by part_no
) b,EC_SP_PART_APPLY c
where b.part_no = c.part_no
and b.ver = c.ver;
查询结果跟上面的方法完全一样: