Вы ищете сводный запрос. Единственный поворот здесь заключается в том, что нам нужно сначала взять объединение таблицы, чтобы объединить данные отправителя и получателя в один столбец.
SELECT
SenderReceiver,
COUNT(CASE WHEN Type = 1 THEN 1 END) AS Type_1,
COUNT(CASE WHEN Type = 2 THEN 1 END) AS Type_2,
COUNT(CASE WHEN Type = 3 THEN 1 END) AS Type_3,
...
COUNT(CASE WHEN Type = 45 THEN 1 END) AS Type_45
FROM
(
SELECT Sender AS SenderReceiver, Type FROM yourTable
UNION ALL
SELECT Receiver, Type FROM yourTable
) t
GROUP BY
SenderReceiver;
Если вы не хотите вводить 45 отдельных CASE
выражения, вы могли бы, возможно, до некоторой степени автоматизировать его, используя Python.