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 靠谱,编码去重后,取最大版本最新版本

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