select 产品型号,合格数,一次交验合格率,加工数量,交验数,过程废品数,终验废品数,
返工数,
过程废品率=case when 加工数量 <> 0 then 过程废品数/加工数量 else 0 end,终验废品率=case when 加工数量 <> 0 then 终验废品数/交验数 else 0 end,
返工率=返工数/交验数,总不合格率=case when 加工数量 <> 0 then (过程废品数+终验废品数)/加工数量 else 0 end,
差额数= 交验数+isnull(过程废品数,0)-isnull(加工数量,0),卡片数 FROM
(select
([基础资料主表].[FShortNumber]) as 产品型号,
sum([采购、工序、产品、其他、委外加工、委外工序检验单].[FPassQty]) as 合格数,
一次交验合格率=sum([采购、工序、产品、其他、委外加工、委外工序检验单].[FPassQty])/sum([采购、工序、产品、其他、委外加工、委外工序检验单].[FCheckQty]),
sum([采购、工序、产品、其他、委外加工、委外工序检验单].[FCheckQty]) as 交验数,
sum([采购、工序、产品、其他、委外加工、委外工序检验单].[FForOpScrapQty]) + sum([采购、工序、产品、其他、委外加工、委外工序检验单].[FForMatScrapQty]) as 终验废品数,
sum([采购、工序、产品、其他、委外加工、委外工序检验单].[FHeadSelfT1443]) as 返工数,
返工率=sum([采购、工序、产品、其他、委外加工、委外工序检验单].[FHeadSelfT1443]) / sum([采购、工序、产品、其他、委外加工、委外工序检验单].[FCheckQty]),
count([基础资料主表].[FShortNumber]) as 卡片数
FROM
([ICQCBill] as [采购、工序、产品、其他、委外加工、委外工序检验单] inner join [t_Item] as [基础资料主表] on [采购、工序、产品、其他、委外加工、委外工序检验单].[FItemID]=[基础资料主表].[FItemID])
INNER JOIN [t_User] as [系统用户信息表] ON [采购、工序、产品、其他、委外加工、委外工序检验单].[FBillerID]=[系统用户信息表].[FUserID]
WHERE
[采购、工序、产品、其他、委外加工、委外工序检验单].FTranType = 713 and
[采购、工序、产品、其他、委外加工、委外工序检验单].[FDate]>={d '********' }
AND [采购、工序、产品、其他、委外加工、委外工序检验单].[FDate] AND [采购、工序、产品、其他、委外加工、委外工序检验单].[FNote]='1'
AND [基础资料主表].[FName]='换向器'
and [采购、工序、产品、其他、委外加工、委外工序检验单].[FBillerID]='16443'
GROUP BY [基础资料主表].[FShortNumber] ) a
left join
(select fshortnumber,加工数量=sum(加工数量),过程废品数=sum(过程) from
(select fshortnumber,fopermoveno,过程=sum(FqtyForItem)+sum(FQtyscrap),
加工数量=case when fopermoveno not like '%-%' then max(SHProcRpt.Fqtyfinish) else 0 end
from
ICQCBill left join SHProcRptmain on FHeadSelfT1442 = fopermoveno
left join SHProcRpt on SHProcRpt.FinterID = SHProcRptMain.FInterID
left join [t_Item] on ICQCBill.FItemID = [t_Item].FItemID
WHERE
ICQCBill.[FDate]>={d '********' } and
ICQCBill.[FDate] ICQCBill.[FNote]='1' and
ICQCBill.[FBillerID]='16443'
group by fshortnumber,fopermoveno) bb
group by fshortnumber ) b
on a. 产品型号 = b.[FShortNumber]