Основное правило в SQL состоит в том, что любой заданный составленный запрос всегда будет возвращать одни и те же столбцы - с точки зрения их количества, их имен и типов.
Так что вы будете искать динамический подход SQL для построения запроса на лету, если вы все еще хотите пойти по этому пути. В противном случае, возможно, стоит посмотреть, можно ли подавить пустые столбцы на более высоком уровне (это относится к какой-либо форме обработчика отчетов - например, к службам отчетов SQL или кристальным отчетам?)
редактировать 1
Возможно, вы захотите добавить дополнительные столбцы к вашему запросу, например:
СЛУЧАЙ, КОГДА DATEPART (месяц, @ StartDate) = DATEPART (месяц, DATEADD (день, 29, @ StartDate)), ТОГДА 1 Иначе 0 КОНЕЦ как ShowColumn29
(и аналогично для других номеров). То, как вы затем используете это в службах Reporting Services, я немного неопределенная, но я думаю, что вы можете добавить скрытое текстовое поле где-то в вашем отчете, которое привязывается к значению ShowColumn29, а затем установить видимость столбца «29» отчета как значение этого текстового поля.
Извините - я не очень хорош в службах отчетности, но, надеюсь, вы сможете поиграть с такой концепцией и заставить ее работать?