Хранимая процедура sql с 2 параметрами (проект и версия) вызывается в Excel:
DRIVER=SQL Server Native Client 11.0;SERVER=xxx;UID=;Trusted_Connection=Yes;APP=Microsoft Office;WSID=xxx;DATABASE=xxx;
EXECUTE [DW].[ExportProjectReport] ?,?;
Хранимая процедура является динамической ивозвращает разные временные диапазоны в виде столбцов (месяцев) для проекта:
SET @cols = STUFF((
SELECT DISTINCT ',' + QUOTENAME(LEFT([Date],7)) + ' FLOAT'
FROM [planning_table]
WHERE LEFT([Date],7) >= @mindate AND LEFT([Date],7) <= @maxdate
order by 1 FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)'),1,1,'')
DECLARE @tempTable TABLE (
[Project Key] VARCHAR(50)
...
,' + @cols + '
); ...
Проблема: При изменении параметра проекта в xls, который должен возвращать различный временной диапазон для проекта (месяцы в виде столбцов), порядок столбцов неверен.Он сохраняет месяцы с первого запроса (проекта) и добавляет предыдущие месяцы нового проекта в конце.При многократном изменении параметра проекта даже имена столбцов (месяцев) становятся ошибочными: например, 2017-55 (вместо 2017-12) Такие параметры, как отключение «Сохранить макет для столбцов», не решают эту проблему.Похоже, что возвращаемый результат первого вызова сохраняется, и дальнейшие вызовы с другим набором результатов (столбцы) не могут быть обработаны правильно.
Как решить эту проблему, или мне нужно принять хранимую процедурудля доставки статических результатов (всегда одинаковое количество столбцов).