If there are exactly 3 matches in table A for each record in table b, use this-- prepare test datadeclare @tablea table (id int, Amount int)insert @tableaselect 1, 20 union allselect 1, 10 union allselect 1, 15declare @tableb table (id int, Amount int)insert @tablebselect 1, 30-- do the magicSELECT a.ID, b1.p1 * a.Col1 Col1, b2.p2 * a.Col2 Col2, b3.p3 * a.Col3 Col3, b.AmountFROM (SELECT 0 p1 UNION ALL SELECT 1) b1CROSS JOIN (SELECT 0 p2 UNION ALL SELECT 1) b2CROSS JOIN (SELECT 0 p3 UNION ALL SELECT 1) b3CROSS JOIN (SELECT ID, MIN(Amount) Col1, SUM(Amount) - MIN(Amount) - MAX(Amount) Col2, MAX(Amount) Col3 FROM @TableA GROUP BY ID) aINNER JOIN @TableB b ON b.ID = a.IDWHERE p1 + p2 + p3 > 0 AND b1.p1 * a.Col1 + b2.p2 * a.Col2 + b3.p3 * a.Col3 = b.Amount
Peter LarssonHelsingborg, Sweden