Mysql поддерживает if
Вы можете разделить всю историю на логические блоки:
кто сделал, что сделал, кому сделал, зачем сделал, сумма
и совать в разнобой айдишники пользователей или операций + добавить поле которое однозначно идентифицирует операцию
в итоге вы будете всегда выбирать 4 поля
перевод: от айди, 'перевел', к айди, '', 10 баксов
поднятие в топ: кто, "поднял в топ", '', '', 10 баксов
покупка подписки: кто, "купил подписку", "", "", 10 баксов
итд, заранее продумайте какие данные возможны в истории, сделайте поля на все случаи жизни (айдишники можно совмешать, пользователя и операции, потом по ифу выводить нужное
И главное и самое плохое, вам придется джойнить все таблицы с данными из которых берете информацию.
Можно обойтись без джойнов, выбрать все данные, отдельно взять из них айдишники нужные, и выбрать отдельно :) иногда это быстрей.