Ano, ta finta se jmenuje třeba dynamicky SQL dotaz. Prostě si dotaz poskládáš do příkazu v proměnné a ten pak spustíš.
Takže nejprve si SQL dotazem zjistíš, max. počet sloupců budeš potřebovat, pak provedeš SQL dotaz, který ti to vybere pod sebe a ty to pak následným skriptem naplníš do tabulky a vrátíš.
MS SQL umí pivot tables, takže si spusť help a nastuduj syntaxi.