Этого легче достичь с помощью условного агрегирования:
SELECT rec_no,
SUM(CASE WHEN fee_title = 'monthly fee' THEN amount ELSE 0 END) AS [monthly fee],
SUM(CASE WHEN fee_title = 'tie fee' THEN amount ELSE 0 END) AS [tie fee],
SUM(CASE WHEN fee_title = 'computer fee' THEN amount ELSE 0 END) AS [computer fee]
FROM receipts
GROUP BY rec_no
Но вы также можете записать как PIVOT
:
SELECT rec_no,
COALESCE([monthly fee], 0) AS [monthly fee],
COALESCE([tie fee], 0) AS [tie fee],
COALESCE([computer fee], 0) AS [computer fee]
FROM receipts
PIVOT (
SUM(amount)
FOR fee_title IN ([monthly fee], [tie fee], [computer fee])
) AS p
В обоих случаях выведите:
rec_no monthly fee tie fee computer fee
1 200 100 0
2 0 0 150
3 200 0 0
Демонстрация по SQLFiddle