It could definitely be an X - Y thing.
Here’s the query pasted from the BAQ. Essentially, my goal is to generate a Stock Status type report where the user enters a cutoff date and the BAQ calculates the qty on hand and value as of that date. There may be ways to optimize the SQL if needed. However, I didn’t feel it was needed because it ran just fine (for me). But I digress. Here it is:
/*
* Disclaimer!!!
* This is not a real query being executed, but a simplified version for general vision.
* Executing it with any other tool may produce a different result.
*/
with [PartLotTrans] as
(select
(sum(1) over (partition by PartTran.Company, PartFIFOTran.PartNum, PartTran.Plant, PartTran.LotNum order by PartFIFOTran.TranNum asc, PartFIFOTran.TranSeq asc)) as [Calculated_Ind],
[PartFIFOTran].[Company] as [PartFIFOTran_Company],
[PartFIFOTran].[PartNum] as [PartFIFOTran_PartNum],
[PartFIFOTran].[LotNum] as [PartFIFOTran_LotNum],
[PartTran].[Plant] as [PartTran_Plant],
(case
when POInfo.Calculated_OrigRecDate is not null
then POInfo.Calculated_OrigRecDate
else PartTran.TranDate
end) as [Calculated_TranDate],
(case
when PartFIFOTran.TranQty is not null
then PartFIFOTran.TranQty
else PartTran.ActTranQty
end) as [Calculated_TranQty],
(sum(TranQty) over (partition by PartTran.Company, PartTran.PartNum, PartTran.Plant, PartTran.LotNum order by PartTran.TranNum, PartFIFOTran.TranSeq asc)) as [Calculated_RunningTotal],
(case
when RunningTotal <> 0
then InvValue / RunningTotal
else 0
end) as [Calculated_UnitCost],
(sum(ExtCost) over (partition by PartTran.Company, PartTran.PartNum, PartTran.Plant, PartTran.LotNum order by PartTran.TranNum, PartFIFOTran.TranSeq asc)) as [Calculated_InvValue],
(case
when PartFIFOTran.TranType = 'ADJ-PUR'
then
case
when PartFIFOTran.TranQty <> 0
then PartFIFOTran.ExtCost
else PartTran.ExtCost
end
when PartFIFOTran.ExtCost is not null
then PartFIFOTran.ExtCost
else PartTran.ExtCost
end) as [Calculated_ExtCost],
(case
when PartFIFOTran.TranType is not null
then PartFIFOTran.TranType
else PartTran.TranType
end) as [Calculated_TranType],
[PartFIFOTran].[TranNum] as [PartFIFOTran_TranNum],
[PartFIFOTran].[TranSeq] as [PartFIFOTran_TranSeq],
[PartFIFOTran].[TranQty] as [PartFIFOTran_TranQty],
[POInfo].[Calculated_OrigRecDate] as [Calculated_OrigRecDate],
[POInfo].[Calculated_RevRecDate] as [Calculated_RevRecDate],
[POInfo].[Calculated_NumReceipts] as [Calculated_NumReceipts],
(case
when PartFIFOTran.TranType = 'ADJ-PUR'
then
case
when PartFIFOTran.TranQty <> 0
then PartFIFOTran.MtlUnitCost * PartFIFOTran.TranQty
else PartTran.MtlUnitCost
end
when PartFIFOTran.MtlUnitCost is not null
then PartFIFOTran.MtlUnitCost * PartFIFOTran.TranQty
else PartTran.MtlUnitCost * PartTran.ActTranQty
end) as [Calculated_MtlCost],
(case
when PartFIFOTran.TranType = 'ADJ-PUR'
then
case
when PartFIFOTran.TranQty <> 0
then PartFIFOTran.MtlBurUnitCost * PartFIFOTran.TranQty
else PartTran.MtlBurUnitCost
end
when PartFIFOTran.MtlBurUnitCost is not null
then PartFIFOTran.MtlBurUnitCost * PartFIFOTran.TranQty
else PartTran.MtlBurUnitCost * PartTran.ActTranQty
end) as [Calculated_MtlBurCost],
(case
when PartFIFOTran.TranType = 'ADJ-PUR'
then
case
when PartFIFOTran.TranQty <> 0
then PartFIFOTran.SubUnitCost * PartFIFOTran.TranQty
else PartTran.SubUnitCost
end
when PartFIFOTran.SubUnitCost is not null
then PartFIFOTran.SubUnitCost * PartFIFOTran.TranQty
else PartTran.SubUnitCost * PartTran.ActTranQty
end) as [Calculated_SubCost],
(case
when RunningTotal <> 0
then RunningMtlCost / RunningTotal
else 0
end) as [Calculated_MtlUnitCost],
(case
when RunningTotal <> 0
then RunningMtlBurCost / RunningTotal
else 0
end) as [Calculated_MtlBurUnitCost],
(case
when RunningTotal <> 0
then RunningSubCost / RunningTotal
else 0
end) as [Calculated_SubUnitCost],
(sum(MtlCost) over (partition by PartTran.Company, PartTran.PartNum, PartTran.Plant, PartTran.LotNum order by PartFIFOTran.TranNum asc, PartFIFOTran.TranSeq asc)) as [Calculated_RunningMtlCost],
(sum(MtlBurCost) over (partition by PartTran.Company, PartTran.PartNum, PartTran.Plant, PartTran.LotNum order by PartFIFOTran.TranNum asc, PartFIFOTran.TranSeq asc)) as [Calculated_RunningMtlBurCost],
(sum(SubCost) over (partition by PartTran.Company, PartTran.PartNum, PartTran.Plant, PartTran.LotNum order by PartFIFOTran.TranNum asc, PartFIFOTran.TranSeq asc)) as [Calculated_RunningSubCost],
(case
when InvValue < 0
then 1
else 0
end) as [Calculated_IsNegativeCost],
[PartTran].[WareHouseCode] as [PartTran_WareHouseCode]
from Erp.PartFIFOTran as PartFIFOTran
inner join Erp.PartTran as PartTran on
PartFIFOTran.Company = PartTran.Company
and PartFIFOTran.TranNum = PartTran.TranNum
left outer join (select
[PartTran1].[Company] as [PartTran1_Company],
[PartTran1].[PartNum] as [PartTran1_PartNum],
[PartTran1].[PONum] as [PartTran1_PONum],
[PartTran1].[POLine] as [PartTran1_POLine],
[PartTran1].[PORelNum] as [PartTran1_PORelNum],
(min(PartTran1.TranDate)) as [Calculated_OrigRecDate],
(max(PartTran1.TranDate)) as [Calculated_RevRecDate],
(sum(
case
when PartTran1.TranQty > 0
then 1
else 0
end
)) as [Calculated_NumReceipts]
from Erp.PartTran as PartTran1
where (PartTran1.TranType = 'PUR-STK')
group by [PartTran1].[Company],
[PartTran1].[PartNum],
[PartTran1].[PONum],
[PartTran1].[POLine],
[PartTran1].[PORelNum]) as POInfo on
PartTran.Company = POInfo.PartTran1_Company
and PartTran.PONum = POInfo.PartTran1_PONum
and PartTran.POLine = POInfo.PartTran1_POLine
and PartTran.PORelNum = POInfo.PartTran1_PORelNum
and PartTran.PartNum = POInfo.PartTran1_PartNum
and ( POInfo.Calculated_NumReceipts > 1 )
inner join Erp.PartPlant as PartPlant1 on
PartTran.Company = PartPlant1.Company
and PartTran.PartNum = PartPlant1.PartNum
and PartTran.Plant = PartPlant1.Plant
and ( PartPlant1.NonStock = 0 )
where ((case
when POInfo.Calculated_OrigRecDate is not null
then POInfo.Calculated_OrigRecDate
else PartTran.TranDate
end) <= @CutoffDate))
select
[PartLotTrans1].[PartFIFOTran_Company] as [PartFIFOTran_Company],
[Part].[PartDescription] as [Part_PartDescription],
[Part].[ClassID] as [Part_ClassID],
[PartLotTrans1].[Calculated_TranDate] as [Calculated_TranDate],
[PartLotTrans1].[Calculated_TranType] as [Calculated_TranType],
[PartLotTrans1].[PartTran_Plant] as [PartTran_Plant],
[PartLotTrans1].[PartFIFOTran_PartNum] as [PartFIFOTran_PartNum],
[PartLotTrans1].[PartFIFOTran_LotNum] as [PartFIFOTran_LotNum],
[PartLotTrans1].[Calculated_RunningTotal] as [Calculated_RunningTotal],
[Part].[IUM] as [Part_IUM],
[PartLotTrans1].[Calculated_MtlUnitCost] as [Calculated_MtlUnitCost],
[PartLotTrans1].[Calculated_MtlBurUnitCost] as [Calculated_MtlBurUnitCost],
[PartLotTrans1].[Calculated_SubUnitCost] as [Calculated_SubUnitCost],
[PartLotTrans1].[Calculated_UnitCost] as [Calculated_UnitCost],
[PartLotTrans1].[Calculated_InvValue] as [Calculated_InvValue]
from PartLotTrans as PartLotTrans1
inner join (select
[PartLotTrans].[PartFIFOTran_Company] as [PartFIFOTran_Company],
[PartLotTrans].[PartFIFOTran_PartNum] as [PartFIFOTran_PartNum],
[PartLotTrans].[PartFIFOTran_LotNum] as [PartFIFOTran_LotNum],
[PartLotTrans].[PartTran_Plant] as [PartTran_Plant],
(max(PartLotTrans.Calculated_Ind)) as [Calculated_MaxIndex]
from PartLotTrans as PartLotTrans
group by [PartLotTrans].[PartFIFOTran_Company],
[PartLotTrans].[PartFIFOTran_PartNum],
[PartLotTrans].[PartFIFOTran_LotNum],
[PartLotTrans].[PartTran_Plant]) as GetMaxIndex on
PartLotTrans1.PartFIFOTran_Company = GetMaxIndex.PartFIFOTran_Company
and PartLotTrans1.PartTran_Plant = GetMaxIndex.PartTran_Plant
and PartLotTrans1.PartFIFOTran_PartNum = GetMaxIndex.PartFIFOTran_PartNum
and PartLotTrans1.PartFIFOTran_LotNum = GetMaxIndex.PartFIFOTran_LotNum
and PartLotTrans1.Calculated_Ind = GetMaxIndex.Calculated_MaxIndex
inner join Erp.Part as Part on
PartLotTrans1.PartFIFOTran_Company = Part.Company
and PartLotTrans1.PartFIFOTran_PartNum = Part.PartNum
and ( not Part.ClassID = 'SAMP' and not Part.ClassID = 'INFR' and not Part.ClassID = 'WASE' and not Part.ClassID = 'FDEV' and not Part.ClassID = 'OUFR' and not Part.ClassID = 'STOR' and not Part.ClassID = 'TAMT' and not Part.ClassID = 'RCLE' and not Part.ClassID = 'RCRM' and not Part.ClassID = 'TRLE' )
left outer join (select
[PartTran2].[Company] as [PartTran2_Company],
[PartTran2].[PartNum] as [PartTran2_PartNum],
[PartTran2].[Plant] as [PartTran2_Plant],
[PartTran2].[LotNum] as [PartTran2_LotNum],
(min(PartTran2.TranDate)) as [Calculated_MinTranDate]
from Erp.PartTran as PartTran2
left outer join Erp.PartFIFOTran as PartFIFOTran1 on
PartTran2.Company = PartFIFOTran1.Company
and PartTran2.TranNum = PartFIFOTran1.TranNum
where (PartFIFOTran1.TranNum is null)
group by [PartTran2].[Company],
[PartTran2].[PartNum],
[PartTran2].[Plant],
[PartTran2].[LotNum]) as SubQuery5 on
PartLotTrans1.PartFIFOTran_PartNum = SubQuery5.PartTran2_PartNum
and PartLotTrans1.PartFIFOTran_Company = SubQuery5.PartTran2_Company
and PartLotTrans1.PartTran_Plant = SubQuery5.PartTran2_Plant
and PartLotTrans1.PartFIFOTran_LotNum = SubQuery5.PartTran2_LotNum
and ( SubQuery5.Calculated_MinTranDate <= @CutoffDate )
where (PartLotTrans1.Calculated_RunningTotal > 0)
order by PartLotTrans1.PartTran_Plant, PartLotTrans1.PartFIFOTran_PartNum, PartLotTrans1.PartTran_WareHouseCode, PartLotTrans1.PartFIFOTran_LotNum