-----------過程中遇到的坑-------------------------
查詢出所有的版本,發現最大最新版本的狀態是Obsolete
狀態用MAX函數後,顯示的結果就走樣了
解決辦法:要不換個min函數試試
感覺好像是對了,仔細一想:萬一還有其他狀態呢,inwork,underreview,這個min/max函數就對結果影響了
在狀態前給它拼接上數字類型的版本應該就可以了,腦回路清奇,prefect
給出最終版本的SQL:
select m.wtpartnumber as 編碼, m.name as 名稱,
max(p.versionida2versioninfo || ‘.’ || p.iterationida2iterationinfo||’–’||p.statestate) as 版本狀態
from wcadmin.manufacturerpartmaster m, wcadmin.manufacturerpart p
where p.ida3masterreference = m.ida2a2
and p.latestiterationinfo = 1
and m.wtpartnumber = ‘ABA050CJA0C9’
group by m.wtpartnumber,m.name
上面說的是第一種坑,因爲我不想寫子查詢
那第二種坑是寫子查詢的,子查詢的邏輯是:
先把wtpart,和wtpartmaster關聯,然後max(mst.ida2a2),
取出mst.ida2a2後再關聯查詢part的具體信息
這種思路大多數時候是有效的,只有一種情況會見鬼:
就是小版本的ID比大版本的ID還大的時候,雖然機率很小,但是我在HW的項目上踩了三次坑
所以,我覺得還是用group by 靠譜,編碼去重後,取最大版本最新版本