Puede usar el PIVOT de SQL Server. operador
SELECT *
FROM (
SELECT P.ProductName
, C.CustName
, T.Amount
FROM Transactions AS T
INNER JOIN Product AS P ON T.ProductID = P.ProductID
INNER JOIN Customer AS C ON T.CustomerID = C.CustomerID
WHERE T.TranDate BETWEEN '2011-01-01' AND '2011-03-31'
) s
PIVOT (SUM(Amount) FOR ProductName IN ([Car], [Cycle], [Scooter])) pvt
Datos de prueba
;WITH q AS (
SELECT [Product] = 'Car', [Customer] = 'Armstrong', [Amount] = 80115.50
UNION ALL SELECT 'Car', 'Michelle', 36571.85
UNION ALL SELECT 'Car', 'Schmidt', 45000.65
UNION ALL SELECT 'Cycle', 'Michelle', 15000.00
UNION ALL SELECT 'Cycle', 'Ronald', 25000.00
UNION ALL SELECT 'Scooter', 'Peterson', 82658.23
UNION ALL SELECT 'Scooter', 'Ronald', 98547.52
UNION ALL SELECT 'Scooter', 'Schmidt', 54000.25
)
SELECT Customer
, Car = ISNULL(Car, 0)
, Cycle = ISNULL(Cycle, 0)
, Scooter = ISNULL(Scooter, 0)
, Total = ISNULL(Car, 0) + ISNULL(Cycle, 0) + ISNULL(Scooter, 0)
FROM (
SELECT *
FROM q
) s
PIVOT (SUM(Amount) FOR Product IN ([Car], [Cycle], [Scooter])) pvt
Salida
Customer Car Cycle Scooter Total
Armstrong 80115.50 0.00 0.00 80115.50
Michelle 36571.85 15000.00 0.00 51571.85
Peterson 0.00 0.00 82658.23 82658.23
Ronald 0.00 25000.00 98547.52 123547.52
Schmidt 45000.65 0.00 54000.25 99000.90