sql 数据库中,按站点号,对条码进行分组,并取出最新数据

一、原始表内容如下:

某个条码 被多个站点 site_id, 记录多次(比如site_id=89),则产生多条记录。

如果想得到89号站点的最新记录 的同时,并获取其它相关信息。

二、sql 语句

思路:

先取站点号89,再对条码进行分组,再对时间进行排序

再取出里面的第一条。

select s.site_id,s.id, s.wo_no,s.serial_no,s.attr01 PART_Q1,s.creation_date 

from (
    select v.*, row_number() over (partition by serial_no order by creation_date desc) as idx
    from wip_sn_collection_info v
    where v.SITE_ID='89'
) s
where s.idx = 1 
and s.serial_no like 'CETCM6041DL503648'

三、讲解

1、用分析函数row_number() 来给分组内的记录编号,然后取编号值为1的记录即可。()

2、partition 的意思是对数据进行分区

3、order by creation_date desc 按时间进行排序,desc从最大值到最小值 ,不写(默认)从最小值到最大值。

4、对于本项目,里面select 的条件,一定要写完整。比如where v.SITE_ID='89',应该放在里面,不应放在外面。因为其它站点也有相同的serial_no  ,应该区分开来。也就是说。分区的条件 要保证正确性。

 

 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章