Debug SQL Query 'Fanning Out' Issue

Job ID: 39803450

Budget: $15 – $25 USD

Help me debug this query...

SELECT
loc.location_id AS [Location ID],
loc.location_name AS [Location Name],
h.tag_no AS [Tag Number],
b.bin_id AS [Bin ID],
l.item_id AS [Item ID],
l.lot AS [Lot],
l.qty_on_hand AS [Qty On Hand],
l.qty_allocated AS [Qty Allocated],
(l.qty_on_hand - l.qty_allocated) AS [Current Qty],
l.sku_cost AS [Cost Each],
(l.qty_on_hand - l.qty_allocated) * l.sku_cost AS [Current Qty Value],
'DETAIL' AS [RowType]
FROM Prophet21.dbo.p21_view_lot l
LEFT JOIN Prophet21.dbo.p21_view_tag_detail d
ON l.item_id = d.item_id
LEFT JOIN Prophet21.dbo.p21_view_tag_hdr h
ON d.tag_hdr_uid = h.tag_hdr_uid
LEFT JOIN Prophet21.dbo.p21_view_bin b
ON h.bin_uid = b.bin_uid
JOIN Prophet21.dbo.p21_view_location loc
ON l.location_id = loc.location_id
WHERE l.qty_on_hand > 0
AND loc.location_id = 100

UNION ALL

-- SUBTOTAL row per location (no tag_no needed here)
SELECT
loc.location_id AS [Location ID],
loc.location_name AS [Location Name],
NULL AS [Tag Number],
NULL AS [Bin ID],
NULL AS [Item ID],
NULL AS [Lot],
NULL AS [Qty On Hand],
NULL AS [Qty Allocated],
NULL AS [Current Qty],
NULL AS [Cost Each],
SUM((l.qty_on_hand - l.qty_allocated) * l.sku_cost) AS [Current Qty Value],
'SUBTOTAL' AS [RowType]
FROM Prophet21.dbo.p21_view_lot l

JOIN Prophet21.dbo.p21_view_location loc
ON l.location_id = loc.location_id
WHERE l.qty_on_hand > 0
AND loc.location_id = 100
GROUP BY loc.location_id, loc.location_name

ORDER BY [Location Name], [RowType] DESC, [Item ID], [Lot];

It is “fan-ing out” my lot rows becauseI am joining lots to tags/bins only on item_id