Je sais que vous avez dit pas de SQL dynamique , mais je ne vois aucun moyen de le faire directement en SQL .
Si vous consultez mes réponses à des problèmes similaires sur Tableau croisé dynamique et colonnes de concaténation et PIVOT dans sql 2005
Le SQL dynamique il n'y a pas de vulnérabilité à l'injection et il n'y a aucune raison valable de l'interdire. Une autre possibilité (si les données changent très rarement) est de faire de la génération de code - au lieu de dynamique SQL , le SQL est généré régulièrement dans une procédure stockée.