背景如图:需要查询出每一个内部编号对应的设备在系统中的最新状态,主表为A
其中B表只含有其对应的编号,但是没有状态
其中C表中含有其对应的状态,但时含有多条状态,我们需要取其中最新的时间节点做为最新状态展示出去
大致类型如上图(灵魂画师),A中的1234分别需要查询C中的对应最新的状态
思路如下,从C表中做筛选,先筛选出最新的时间状态件,把他化作一个视图
select * from
( select
计划生产.工序,
制表日期,
计划生产.订单细则号,
case when len(substring(计划投产.内部编号, 5, 30))<6
then rtrim(ltrim(内部编号))
else substring(计划投产.内部编号, 5, 30)
end as 内部编号,
row_number() over(partition
by
内部编号
order by
制表日期 desc) num
from
计划生产
left join
计划投产
on 计划生产.订单细则号 =计划投产.细则号)v
where
v.num=1
每次查询都需要对这个视图进行一次拼接才能将所有的状态都查出来
select
审批人,
序号,
b.工序 as 工序5,
制表人,
case
when '审批人' is not null then '审批通过'
when '审批人' is null then '审批中'
end as 审批状态
from
新模型结构评审表
left join
在制工序 b
on b.内部编号=内部编号5
where
是否需要展示 is null
如果有多个状态,则需要多次进行拼接