是多表查询,我发现是使用了case when 的字段会出现报错,请教是这样使用有错误还是查询表不支持case when 这种功能啊?
查询语句如下:
s e l e c t b.工厂,b.物料,b.物料描述,b.基本数量,b.BUn as 单位,b.组件 ,b.组件描述,b.数量 ,b.Un as 组件单位,b.MRP_组,m.物料类型,(case when m.物料类型='ROH' then b.数量/b.基本数量 end ) as 原料克重 ,(case when m.物料类型='ROH' then m.价格/m.价格单位 end ) as 原料克价,(case when m.物料类型='Z001' then m.价格/m.价格单位 end ) as 包辅单价,(case when m.物料类型='ROH' then m.价格/m.价格单位 end ) * b.数量 / b.基本数量 as 物料原料成本,(case when m.物料类型='Z001' then m.价格/m.价格单位 end ) * b.数量 / b.基本数量 as 物料包辅成本,r.加工周期,r.机器折旧 as 机折系数 ,r.电 as 用电系数,(case when len(b.组件)>=13 and b.mrp_组='注塑半成品' then bmj.模具编号 when len(b.组件)<13 and b.mrp_组='注塑半成品' then bmj1.模具编号 else '' end ) as 模具编号 ,(case when len(b.组件)>=13 and b.mrp_组='注塑半成品' then bmj.模具名称 when len(b.组件)<13 and b.mrp_组='注塑半成品' then bmj1.模具名称 else '' end ) as 模具名称 ,(case when len(b.组件)>=13 and b.mrp_组='注塑半成品' then bmj.模穴数 when len(b.组件)<13 and b.mrp_组='注塑半成品' then bmj1.模穴数 else 0 end ) as 模穴数
,(case when len(b.组件)>=13 and b.mrp_组='注塑半成品' then zmj.原始值 when len(b.组件)<13 and b.mrp_组='注塑半成品' then zmj1.原始值 else 0 end ) as 模具原值
,b._identify ,b._locked from {sapbom} b
left join {sapmaterial} m on b.工厂=m.工厂 and b.组件=m.物料
left join {sapprdroute} r on b.工厂=r.工厂 and b.组件=r.物料
left join {sap半成品模具} bmj on substring(b.组件,1,8)=bmj.半成品编码
left join {sap半成品模具} bmj1 on substring(b.组件,1,4)= bmj1.半成品编码
left join {sap模具原值} zmj on bmj.模具编号=zmj.模具编号
left join {sap模具原值} zmj1 on bmj1.模具编号=zmj1.模具编号
where m.物料类型='HALB'
此主题相关图片如下:2.png