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  ,應該區分開來。也就是說。分區的條件 要保證正確性。

 

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