2013-09-29 3 views
4

с помощью Visual Studio 2010 и SQL Server 2012SSRS subtotalling столбцов с выражениями

Я сделал отчет SSRS, который требует специального метода промежуточных итогов и прийти к итогу для процентов активов и других расчетов, полученного от Процента Активы. Я не могу просто использовать функцию «Добавить общую функцию», потому что она выделена серым цветом, что характерно для суммирования выражений. Я не могу вручную подсчитать промежуточные итоги, потому что получаю вложенную совокупную ошибку.

Программное обеспечение, которое я использую, чтобы сделать этот отчет SSRS, предоставляет различные хранимые процедуры и функции для создания отчетов с использованием производных вычислений. Хранимая процедура содержит столбец «Процент активов», но поскольку отчет фильтруется, чтобы отображать только обычные акции, процентная доля функции «Активы» по-прежнему не учитывает нефильтрованные активы при ее вычислении. Рассматриваемые активы составляют 59,7% от общего объема холдингов, но мне нужен отчет, чтобы вести себя так, как если бы они составляли 100% акций.

Чтобы понять часть математики в этом отчете, посмотрите следующий отчет. Обратите внимание, что отчет, который я хочу, включает только обычные акции, которые составляют 59,7 Процент от общих активов, как указано.

Appraisal

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

intlexample

% Компания продаж является жёстком значения, которое представляет собой процент от продаж, которые являются либо внутренними или международными. Вы видите это и% портфельных активов как на международных, так и на внутренних столах.

% Портфель Активы рассчитываются путем умножения процента активов данного холдинга на стоимость продажи жестко закодированной компании. В первом примере портфельные активы McDonald's 2.1% составляют 6,6% * 32%.

6,6% является процент активов Макдоналдса представляет в портфеле, если вы только подсчитать общий запас (исключая наличные)

McDonald's Value  Total Portfolio Value  % 
4,950.00  / 73,919.50 =  6.6000% 

учета национального пробоя/International в процентах

Total % Sales  %Split  Region 
6.60% 32%  2.1%  Domestic 
6.60% 68%  4.5%  International 

Теперь вот мой выход отчета. Он немного отличается от дизайна, который я покажу, потому что я добавил столбцы и изменил заголовки в пояснительных целях в этом примере предварительного просмотра. Пока я просто пытаюсь заставить рабочий стол работать. Как только это будет работать, я буду строить международную таблицу. У меня есть несколько дополнительных колонок, которые я использую для устранения неполадок.

SSRS1

Я попробовал несколько методов для расчета портфеля активов. Я могу получить правильные значения отдельных строк, но я не могу получить правильное значение промежуточного итога, используя разные методы из-за вложенной совокупной ошибки (суммирование и уже суммированное выражение при использовании области данных). Общая сумма также важна, но для теперь я просто пытаюсь получить промежуточную работу.

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

SSRS1

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

= SUM (Fields! MarketValue.Value/Сумма (Fields! MarketValue. Значение, «DataSet1»))

ERROR Error 2 [rsInvalidNestedDataSetAggregate] The Value expression for the text box ‘Textbox39’ has a nested aggregate that specifies a dataset scope. Inner aggregates cannot specify a dataset scope. 

Если использовать поле PercentAssets, который включен в хранимой процедуре я могу итог и получить общую сумму без ошибок, но значение - это отфильтрованное значение, которое суммируется только до 59.7, если умножить этот отфильтрованный процент на продажи компании, это значение неверно.

SSRS1

Последнее, что я пытался использовать пользовательский код VBA, чтобы получить мои промежуточные и итоговые. Однако это обеспечивает текущую сумму рассчитанных процентов, а не промежуточные итоги, которые мне нужны для групп SectorName.

Вот VBA код я использовал, который я нашел в Интернете здесь: http://social.msdn.microsoft.com/Forums/sqlserver/en-US/1d3c5ec1-89cb-4108-8637-ff434027b1ec/sum-an-expression-value-ssrs

Dim public nettotal as Double 
    Public Function Getvalue (ByVal subtotal AS Double) AS Double 
       nettotal = nettotal+ subtotal 
       return subtotal 
    End Function 
Public Function Totalvalue() 
       return nettotal 
End Function 

Код развернутого codedep

В итоге мне нужно умножить значения Рассчитанного Percent столбца Компании продажи. Мне нужно подсчитать результат этих вычислений.

Если вы посмотрите в разделе «Сектор информационных технологий», вы можете увидеть, что исходный отчет правильно достигает 32.8 в качестве промежуточного итога.

Мой отчет неправильно достигает 100%, потому что это текущая итоговая сумма Рассчитанных процентов.

Вот ссылка на оригинальный RDL

https://dl.dropboxusercontent.com/u/87501202/InternationalDomestic.rdl

+1

Не пытаясь воспроизвести полную информацию (и, следовательно, просто опубликовать в качестве комментария на данный момент), что произойдет, когда вы попробуете '= SUM (Fields! MarketValue.Value)/Sum (Fields! MarketValue.Value, DataSet1) вместо '= SUM (Fields! MarketValue.Value/Sum (Fields! MarketValue.Value, DataSet1))), который выглядит у него плохой синтаксис - первый должен работать нормально, я думаю. –

+0

Это работает сейчас, мне просто нужно получить общую работу. Спасибо за вашу помощь по другому вопросу, касающемуся этого отчета. –

+0

Код VBA, который я опубликовал, работает для Grand Total. Теперь отчет работает;) –

ответ

1

Похоже, ваш код:

=SUM(Fields!MarketValue.Value/Sum(Fields!MarketValue.Value, "DataSet1")) 

не совсем правильно ... Попробуйте вместо этого:

=SUM(Fields!MarketValue.Value)/Sum(Fields!MarketValue.Value, "DataSet1") 

Ломать его немного, вторая часть кода - expression/expression; теперь это всего лишь два выражения SUM с различными областями по мере необходимости - первый выглядит так, что синтаксис слегка выключен, следовательно, ваша ошибка.

+0

Ian Я говорил слишком рано.Большая сумма еще не работает. Он работает, если отчет выполняется против учетной записи, в которой обыкновенные акции составляют 100% портфеля. Но когда общее количество фильтруется, что-то идет не так. Любые идеи придумать грандиозную сумму, которая суммирует все промежуточные итоги? Я заметил, что одна проблема возникает, когда в столбцах продаж компании есть 0. –

+0

Отметьте это как правильное, но мне, возможно, потребуется снова отправить сообщение об общей проблеме. –

Смежные вопросы