Jag vet att du inte sa någon dynamisk SQL , men jag ser inget sätt att göra det i rak SQL .
Om du kollar in mina svar på liknande problem i Pivot Table and Concatenate Columns och PIVOT i sql 2005
Den dynamiska SQL det är inte sårbart för injektion, och det finns ingen god anledning att förbjuda det. En annan möjlighet (om data ändras mycket sällan) är att göra kodgenerering - istället för dynamisk SQL , SQL genereras till en lagrad procedur regelbundet.