select
TOP 100 PERCENT p.序号,
p.内部编号,
p.工序,
p.制表日期 as 最新报工时间,
p.措施,
铸件工艺单细则.排箱号,
v.计划时间 as 造型计划时间,
p.审批时间 as 结构评审完成时间
select
审批时间,
内部编号5 as 内部编号,
isnull(x.工序,
'未生产') as 工序,
x.制表日期,
措施38 as 措施
新模型结构评审表
left join
在制工序2 x
on x.内部编号=substring(内部编号5,
convert(int,
replace(isnull(convert(int,
charindex('/',
内部编号5)),
datalength(内部编号5))))
where
内部编号5<>''
and 措施38 <>''
left join
铸件工艺单细则 on. 铸件工艺单细则.内部编号=substring(p.内部编号, 0, convert(int, replace(isnull(convert(int, charindex('/', p.内部编号)), 0), 0, datalength(p.内部编号))))
left join
select
TOP 100 PERCENT 工序,
模检淋涂计划表
where
工序='造型'
on v.排箱号=铸件工艺单细则.排箱号
where
p.审批时间>'2019-07-20'
order by
CHARINDEX(RTRIM(CAST(p.工序 as NCHAR)),
'组箱,模检,淋涂烘干一,淋涂烘干二,补强,造型,熔炼浇注,解箱,粗抛,清砂,精抛,检查称重,喷漆,入库,未生产')
其中主要起到排序作用的是最下方的order by 后面的语句,它可以通过将某个字段自定义后,按照一定格式进行排序,例如以上代码可以通过将工序这个字段,按照 组箱,模检,淋涂烘干一,淋涂烘干二,补强,造型,熔炼浇注,解箱,粗抛,清砂,精抛,检查称重,喷漆,入库,未生产 这个顺序依次进行排序,
在排序前发生过一个问题,这个排序无法识别空字符串及null,也就是代码中这个类别如果为空,则无法将它排序到最后面,这里我在之前用isnull做了非空的操作,将空值也进行了排序