EXCEL вызов sql серверной хранимой процедуры => проблема столбцов - PullRequest
0 голосов
/ 11 февраля 2019

Хранимая процедура 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) Такие параметры, как отключение «Сохранить макет для столбцов», не решают эту проблему.Похоже, что возвращаемый результат первого вызова сохраняется, и дальнейшие вызовы с другим набором результатов (столбцы) не могут быть обработаны правильно.

Как решить эту проблему, или мне нужно принять хранимую процедурудля доставки статических результатов (всегда одинаковое количество столбцов).

1 Ответ

0 голосов
/ 11 февраля 2019

Да, если бы это была одна таблица, я бы использовал SSAS Cube с Power Pivot в XLS. Но у меня есть 5 листов с необработанными данными (5 различных вызовов хранимых процедур) на проект, которые следует объединить в один отчет на VBA,включая специальный макет и различные вычисления ... Поэтому я делаю сводку для всех 5 источников в SQL, чтобы обеспечить одинаковое количество столбцов и строк во всех проектах для всех 5 источников

BR wopro

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...