Использование динамически создаваемых столбцов SQL Server в предложении where в SP, подключенном к SSRS

Мне нужно запустить хранимую процедуру, передав ее startDate а также EndDate параметры. Хранимая процедура создает PeriodColumns динамически на основе этих параметров: 1 столбец за 3 месяца.

Примеры (дд / мм / гггг):

  • дата начала: 01.01.2014
  • дата окончания: 01/12/2014

  • Колонки:

        id Period0Status Period1Status Period2Status Period3Status
         1  Active        Waiting        Passive       Closed
         2  Active        Passive        Active        Completed
    
  • дата начала: 01.01.2014

  • дата окончания: 01/06/2014
  • Колонки:

        id Period0Status Period1Status
         7  Active        Completed
         8  Active        Waiting
    

Когда я пытаюсь выбрать запрос, как:

Select * 
from myTable t 
where t.Period2 = ...

это не позволяет мне, потому что в определении нет столбца Period2. Эти столбцы генерируются динамически, как сказано выше. Определение таблицы:

Create Table myTable (id int)

С другой стороны, запрос как

Select * 
from myTable t 
where Period2 = ...

как-то работает нормально, хотя Period2 подчеркнут красным в запросе. Однако проблема возникает, когда я подключаю эту хранимую процедуру к другому приложению, Microsoft SSRS 2008. Когда я нажимаю кнопку Обновить поля в свойствах DataSet, выдается сообщение об ошибке:

убедитесь, что вы можете подключиться к источнику данных и правильный синтаксис запроса

Я не могу определить фиксированные периоды в определении таблицы. Без определения их я не могу использовать их в WHERE юридически - когда SQL Server подчеркивает это красным и говорит синтаксическую ошибку, хотя хранимая процедура работает, когда я использую ее в SSRS, она не работает и выдает указанную ошибку.

Как я мог решить эту проблему? Любая помощь будет так цениться!

1 ответ

В прошлом я делал так, чтобы хранимая процедура всегда генерировала одинаковое количество столбцов... каким бы ни было максимальное количество столбцов.

Если вам нужны только два столбца, верните первые два столбца с данными, а все остальные могут быть NULL.

Затем используйте свойство видимости в SSRS, чтобы скрыть все столбцы со значением NULL.

Другие вопросы по тегам