I am trying to get a monthly count of quantity of parts on order, suggested quantity to order, and the demand quantity. These all use different tables, with different date columns, so I set up a CTE with two unions to combine them. It mostly works, but I have a feeling I didn’t set up my dummy columns correctly; I create calculated fields set to null to make sure the CTE/unions have matching columns.
Results (e.g. rows 5 and 6 should be combined so that it has both open qty. and required qty.):
CTE:
Unions:
SubQuery list:
(select
[JobMtl].[Company] as [JobMtl_Company],
[JobMtl].[PartNum] as [JobMtl_PartNum],
(case when datepart(month,JobHead.StartDate)= '1' then concat(datepart(year,JobHead.StartDate),'-01-January') when datepart(month,JobHead.StartDate)= '2' then concat(datepart(year,JobHead.StartDate),'-02-February') when datepart(month,JobHead.StartDate)= '3' then concat(datepart(year,JobHead.StartDate),'-03-March') when datepart(month,JobHead.StartDate)= '4' then concat(datepart(year,JobHead.StartDate),'-04-April') when datepart(month,JobHead.StartDate)= '5' then concat(datepart(year,JobHead.StartDate),'-05-May') when datepart(month,JobHead.StartDate)= '6' then concat(datepart(year,JobHead.StartDate),'-06-June') when datepart(month,JobHead.StartDate)= '7' then concat(datepart(year,JobHead.StartDate),'-07-July') when datepart(month,JobHead.StartDate)= '8' then concat(datepart(year,JobHead.StartDate),'-08-August') when datepart(month,JobHead.StartDate)= '9' then concat(datepart(year,JobHead.StartDate),'-09-September') when datepart(month,JobHead.StartDate)= '10' then concat(datepart(year,JobHead.StartDate),'-10-October') when datepart(month,JobHead.StartDate)= '11' then concat(datepart(year,JobHead.StartDate),'-11-November') when datepart(month,JobHead.StartDate)= '12' then concat(datepart(year,JobHead.StartDate),'-12-December') else null end) as [Calculated_MonthYear],
(null) as [Calculated_POSugQty],
(null) as [Calculated_OpenQty],
(sum(JobMtl.RequiredQty)) as [Calculated_RequiredQty]
from Erp.JobHead as JobHead
inner join Erp.JobMtl as JobMtl on
JobHead.Company = JobMtl.Company
and JobHead.JobNum = JobMtl.JobNum
and ( JobMtl.RequiredQty > 0 )
where (JobHead.JobType = 'MFG' and JobHead.JobComplete = 0)
group by [JobMtl].[Company],
[JobMtl].[PartNum],
(case when datepart(month,JobHead.StartDate)= '1' then concat(datepart(year,JobHead.StartDate),'-01-January') when datepart(month,JobHead.StartDate)= '2' then concat(datepart(year,JobHead.StartDate),'-02-February') when datepart(month,JobHead.StartDate)= '3' then concat(datepart(year,JobHead.StartDate),'-03-March') when datepart(month,JobHead.StartDate)= '4' then concat(datepart(year,JobHead.StartDate),'-04-April') when datepart(month,JobHead.StartDate)= '5' then concat(datepart(year,JobHead.StartDate),'-05-May') when datepart(month,JobHead.StartDate)= '6' then concat(datepart(year,JobHead.StartDate),'-06-June') when datepart(month,JobHead.StartDate)= '7' then concat(datepart(year,JobHead.StartDate),'-07-July') when datepart(month,JobHead.StartDate)= '8' then concat(datepart(year,JobHead.StartDate),'-08-August') when datepart(month,JobHead.StartDate)= '9' then concat(datepart(year,JobHead.StartDate),'-09-September') when datepart(month,JobHead.StartDate)= '10' then concat(datepart(year,JobHead.StartDate),'-10-October') when datepart(month,JobHead.StartDate)= '11' then concat(datepart(year,JobHead.StartDate),'-11-November') when datepart(month,JobHead.StartDate)= '12' then concat(datepart(year,JobHead.StartDate),'-12-December') else null end)
union
select
[PODetail].[Company] as [PODetail_Company],
[PODetail].[PartNum] as [PODetail_PartNum],
(case when datepart(month,PORel.DueDate)= '1' then concat(datepart(year,PORel.DueDate),'-01-January') when datepart(month,PORel.DueDate)= '2' then concat(datepart(year,PORel.DueDate),'-02-February') when datepart(month,PORel.DueDate)= '3' then concat(datepart(year,PORel.DueDate),'-03-March') when datepart(month,PORel.DueDate)= '4' then concat(datepart(year,PORel.DueDate),'-04-April') when datepart(month,PORel.DueDate)= '5' then concat(datepart(year,PORel.DueDate),'-05-May') when datepart(month,PORel.DueDate)= '6' then concat(datepart(year,PORel.DueDate),'-06-June') when datepart(month,PORel.DueDate)= '7' then concat(datepart(year,PORel.DueDate),'-07-July') when datepart(month,PORel.DueDate)= '8' then concat(datepart(year,PORel.DueDate),'-08-August') when datepart(month,PORel.DueDate)= '9' then concat(datepart(year,PORel.DueDate),'-09-September') when datepart(month,PORel.DueDate)= '10' then concat(datepart(year,PORel.DueDate),'-10-October') when datepart(month,PORel.DueDate)= '11' then concat(datepart(year,PORel.DueDate),'-11-November') when datepart(month,PORel.DueDate)= '12' then concat(datepart(year,PORel.DueDate),'-12-December') else null end) as [Calculated_MonthYear],
(null) as [Calculated_POSugQty],
(sum(PORel.RelQty)) as [Calculated_OpenQty],
(null) as [Calculated_RequiredQty]
from Erp.PODetail as PODetail
inner join Erp.PORel as PORel on
PODetail.Company = PORel.Company
and PODetail.PONUM = PORel.PONum
and PODetail.POLine = PORel.POLine
and ( PORel.OpenRelease = 1 and PORel.VoidRelease = 0 )
group by [PODetail].[Company],
[PODetail].[PartNum],
(case when datepart(month,PORel.DueDate)= '1' then concat(datepart(year,PORel.DueDate),'-01-January') when datepart(month,PORel.DueDate)= '2' then concat(datepart(year,PORel.DueDate),'-02-February') when datepart(month,PORel.DueDate)= '3' then concat(datepart(year,PORel.DueDate),'-03-March') when datepart(month,PORel.DueDate)= '4' then concat(datepart(year,PORel.DueDate),'-04-April') when datepart(month,PORel.DueDate)= '5' then concat(datepart(year,PORel.DueDate),'-05-May') when datepart(month,PORel.DueDate)= '6' then concat(datepart(year,PORel.DueDate),'-06-June') when datepart(month,PORel.DueDate)= '7' then concat(datepart(year,PORel.DueDate),'-07-July') when datepart(month,PORel.DueDate)= '8' then concat(datepart(year,PORel.DueDate),'-08-August') when datepart(month,PORel.DueDate)= '9' then concat(datepart(year,PORel.DueDate),'-09-September') when datepart(month,PORel.DueDate)= '10' then concat(datepart(year,PORel.DueDate),'-10-October') when datepart(month,PORel.DueDate)= '11' then concat(datepart(year,PORel.DueDate),'-11-November') when datepart(month,PORel.DueDate)= '12' then concat(datepart(year,PORel.DueDate),'-12-December') else null end)
union
select
[SugPoDtl].[Company] as [SugPoDtl_Company],
[SugPoDtl].[PartNum] as [SugPoDtl_PartNum],
(case when datepart(month,SugPODtl.DueDate)= '1' then concat(datepart(year,SugPODtl.DueDate),'-01-January') when datepart(month,SugPODtl.DueDate)= '2' then concat(datepart(year,SugPODtl.DueDate),'-02-February') when datepart(month,SugPODtl.DueDate)= '3' then concat(datepart(year,SugPODtl.DueDate),'-03-March') when datepart(month,SugPODtl.DueDate)= '4' then concat(datepart(year,SugPODtl.DueDate),'-04-April') when datepart(month,SugPODtl.DueDate)= '5' then concat(datepart(year,SugPODtl.DueDate),'-05-May') when datepart(month,SugPODtl.DueDate)= '6' then concat(datepart(year,SugPODtl.DueDate),'-06-June') when datepart(month,SugPODtl.DueDate)= '7' then concat(datepart(year,SugPODtl.DueDate),'-07-July') when datepart(month,SugPODtl.DueDate)= '8' then concat(datepart(year,SugPODtl.DueDate),'-08-August') when datepart(month,SugPODtl.DueDate)= '9' then concat(datepart(year,SugPODtl.DueDate),'-09-September') when datepart(month,SugPODtl.DueDate)= '10' then concat(datepart(year,SugPODtl.DueDate),'-10-October') when datepart(month,SugPODtl.DueDate)= '11' then concat(datepart(year,SugPODtl.DueDate),'-11-November') when datepart(month,SugPODtl.DueDate)= '12' then concat(datepart(year,SugPODtl.DueDate),'-12-December') else null end) as [Calculated_MonthYear],
(sum(SugPoDtl.RelQty)) as [Calculated_POSugQty],
(null) as [Calculated_OpenQty],
(null) as [Calculated_RequiredQty]
from Erp.SugPoDtl as SugPoDtl
group by [SugPoDtl].[Company],
[SugPoDtl].[PartNum],
(case when datepart(month,SugPODtl.DueDate)= '1' then concat(datepart(year,SugPODtl.DueDate),'-01-January') when datepart(month,SugPODtl.DueDate)= '2' then concat(datepart(year,SugPODtl.DueDate),'-02-February') when datepart(month,SugPODtl.DueDate)= '3' then concat(datepart(year,SugPODtl.DueDate),'-03-March') when datepart(month,SugPODtl.DueDate)= '4' then concat(datepart(year,SugPODtl.DueDate),'-04-April') when datepart(month,SugPODtl.DueDate)= '5' then concat(datepart(year,SugPODtl.DueDate),'-05-May') when datepart(month,SugPODtl.DueDate)= '6' then concat(datepart(year,SugPODtl.DueDate),'-06-June') when datepart(month,SugPODtl.DueDate)= '7' then concat(datepart(year,SugPODtl.DueDate),'-07-July') when datepart(month,SugPODtl.DueDate)= '8' then concat(datepart(year,SugPODtl.DueDate),'-08-August') when datepart(month,SugPODtl.DueDate)= '9' then concat(datepart(year,SugPODtl.DueDate),'-09-September') when datepart(month,SugPODtl.DueDate)= '10' then concat(datepart(year,SugPODtl.DueDate),'-10-October') when datepart(month,SugPODtl.DueDate)= '11' then concat(datepart(year,SugPODtl.DueDate),'-11-November') when datepart(month,SugPODtl.DueDate)= '12' then concat(datepart(year,SugPODtl.DueDate),'-12-December') else null end))
select
[JobQty].[JobMtl_Company] as [JobMtl_Company],
[JobQty].[JobMtl_PartNum] as [JobMtl_PartNum],
[JobQty].[Calculated_MonthYear] as [Calculated_MonthYear],
[JobQty].[Calculated_POSugQty] as [Calculated_POSugQty],
[JobQty].[Calculated_OpenQty] as [Calculated_OpenQty],
[JobQty].[Calculated_RequiredQty] as [Calculated_RequiredQty],
(case
when OnHandQty.PartBin_WarehouseCode <> 'BRZINSP' then OnHandQty.Calculated_TotalOnHand
else 0
end) as [Calculated_OnHandQty],
(case
when OnHandQty.PartBin_WarehouseCode = 'BRZINSP' then OnHandQty.Calculated_TotalOnHand
else 0
end) as [Calculated_InspQty],
(sum(DMRHead.TotDiscrepantQty)) as [Calculated_DMRQty]
from JobQty as JobQty
left outer join Erp.DMRHead as DMRHead on
JobQty.JobMtl_Company = DMRHead.Company
and JobQty.JobMtl_PartNum = DMRHead.PartNum
and ( DMRHead.OpenDMR = 1 )
left outer join (select
[PartBin].[Company] as [PartBin_Company],
[PartBin].[PartNum] as [PartBin_PartNum],
[PartBin].[WarehouseCode] as [PartBin_WarehouseCode],
(sum(PartBin.OnhandQty)) as [Calculated_TotalOnHand]
from Erp.PartBin as PartBin
group by [PartBin].[Company],
[PartBin].[PartNum],
[PartBin].[WarehouseCode]) as OnHandQty on
JobQty.JobMtl_Company = OnHandQty.PartBin_Company
and JobQty.JobMtl_PartNum = OnHandQty.PartBin_PartNum
where (JobQty.JobMtl_PartNum = '7002077')
group by [JobQty].[JobMtl_Company],
[JobQty].[JobMtl_PartNum],
[JobQty].[Calculated_MonthYear],
[JobQty].[Calculated_POSugQty],
[JobQty].[Calculated_OpenQty],
[JobQty].[Calculated_RequiredQty],
(case
when OnHandQty.PartBin_WarehouseCode <> 'BRZINSP' then OnHandQty.Calculated_TotalOnHand
else 0
end),
(case
when OnHandQty.PartBin_WarehouseCode = 'BRZINSP' then OnHandQty.Calculated_TotalOnHand
else 0
end)