windchill中查詢最大最新版本的數據中遇到的坑

-----------過程中遇到的坑-------------------------
查詢出所有的版本,發現最大最新版本的狀態是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 靠譜,編碼去重後,取最大版本最新版本

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