Оконная функция - лучший подход, но вы также можете попробовать следующее:
Введите:
CREATE TABLE #Data (
ID int,
[Type] varchar(1),
Price numeric(10, 2),
Description varchar(50)
)
INSERT INTO #Data
(ID, [Type], Price, Description)
VALUES
(2, 'J', 40.00, 'Job'),
(2, 'F', 10.00, 'Freight'),
(2, 'P', 20.00, 'Postage'),
(2, 'F', 5.00, 'Handling'),
(7, 'J', 50.00, 'Job'),
(7, 'F', 20.00, 'Freight'),
(7, 'P', 30.00, 'Postage'),
(7, 'H', 5.00, 'Handling')
Заявление:
SELECT t.*, s.*
FROM #Data t
LEFT JOIN (
SELECT ID, SUM(Price) AS FreightPrice
FROM #Data
WHERE [Type] = 'F'
GROUP BY [ID]
) s ON (t.ID = s.ID)
Выход:
ID Type Price Description ID FreightPrice
2 J 40.00 Job 2 15.00
2 F 10.00 Freight 2 15.00
2 P 20.00 Postage 2 15.00
2 F 5.00 Handling 2 15.00
7 J 50.00 Job 7 20.00
7 F 20.00 Freight 7 20.00
7 P 30.00 Postage 7 20.00
7 H 5.00 Handling 7 20.00