2013-06-03 5 views
5

Пожалуйста, простите туманное название этого вопроса. Возможно, ниже будет задан мой вопрос лучше.SQL Report Builder: получить значение из группы в tablix

Рассмотрим ниже агрегированные таблицы:

Fruit Units FruitSales% 
----- ----- ----------- 
Apples  10    ? 
Oranges 20    ? 
Bananas 10    ? 
NonFruit 10    ? 

TOTAL  50    ? 

мне нужно FruitSales% столбец быть: Fruit/(Total - NonFruit)

Если NonFruit это название продукта самостоятельно, как я могу получить его значение для использования в других вычисления в таблице?

Я полагаю, моя формула для FruitSales% является что-то вроде:

Sum(Fields!Units.Value)/(ReportItems!txtTotalUnits.Value - SumIf(Fields!Fruit = "NonFruit", Fields!Units.Value) 

Однако SumIf не существует, и даже если это так, было бы специфичны для текущей строки.

И пока я здесь, ReportItems!txtTotalUnits.Value, я, очевидно, назвал это текстовое поле, но есть ли более чистый способ ссылаться на него?

ответ

3

Say основной набор данных (который я назвал FruitDataSet) выглядит следующим образом:

enter image description here

Я создал простой отчет на основе этих данных:

enter image description here

Продажи фруктов% выражение:

=Sum(IIf(Fields!fruit.Value <> "NonFruit", Fields!units.Value, 0)) 
/Sum(IIf(Fields!fruit.Value <> "NonFruit", Fields!units.Value, 0), "FruitDataSet") 

Это дает то, что я думаю, что это правильные результаты:

enter image description here

Там находятся две вещи, чтобы отметить о выражении:

  1. Запустив Sum против IIf выражения , вы можете контролировать то, что входит в итоговые значения - здесь я устанавливаю NonFruit явно .

  2. Устанавливая Scope совокупного выражения, вы можете получить общие итоги использовать для выработки общих проценты - в докладе я получаю в общей сложности с использованием FruitDataSet и сравнивая это с группой уровня всего, чтобы получить значение%.

То, как вы ссылаетесь на полное текстовое поле, прекрасно; единственной альтернативой было бы использовать выражение каждый раз, когда вы хотите получить итоговое значение - если это за пределами Tablix, вам нужно явно указать область действия, например. DataSet.

+1

Большое спасибо Яну, это прекрасно и так хорошо объяснено. Я очень ценю время, которое вы потратили на это! – Warren

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