2009-05-28 3 views
0

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

  
        Location 1   Location 2 
       Total Hrs Amount  Total Hrs Amount 
    Position1 441.68 $4,201.46 556.73 $6,103.67 

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

 
        Location 1   Location 2   Avg 
       Total Hrs Amount  Total Hrs Amount  Avg Hrs 
    Position1 441.68 $4,201.46 556.73 $6,103.67 499.20 

Может не совсем понять, как заставить это работать в SSRS 2005 ...

ответ

1

Вы могли бы иметь вычисляемое поле с формулой (Rs! localtion1Hrs + RS! location2hrs)/2.

ИЛИ

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

+0

только что отредактировал вопрос - добавлено это - может быть любое количество мест ... поэтому я начинаю с отчета о матрице ... пользователь может выбрать до 50 местоположений для просмотра. ... – w4ik

+0

Что такое SQL за исходными данными? – shahkalpesh

+0

Я думаю, матричный отчет должен иметь возможность добавлять дополнительные сводные столбцы. К сожалению, это было какое-то время, когда я работал над SSRS. – shahkalpesh

0

Довольно точно, что я решил это, используя следующее в качестве DataSet для отчета и используя матрицу в макете отчета.

В основном я сделал то, что сказал шахкальпеш выше ... «Запрос, используемый для показа отчета, может иметь это поле в качестве расчетного столбца».

select 
     'Avg' as LocationID, 
     'Avg' as Description, 
     AccountDesc, 
     @PayrollYear as Year, 
     @PayrollMonth as Month, 
     avg(s.TotalHrs) as TotalHrs, 
     avg(s.Amount) as Amount from 
(
    select LocationID, 'Avg' as Description, AccountDesc, 
    @PayrollYear as Year, @PayrollMonth as Month,  
    sum(TotalHrs) as TotalHrs, 
    sum(Amount) as Amount from vwPayroll 
    where LocationID in (select value from dbo.ParmsToList(@PayrollLocIds)) 
    and Year = @PayrollYear and Month = @PayrollMonth 
    group by LocationID, AccountDesc, Year, Month 
) as s 
group by AccountDesc 

union all 

select 
     LocationID, 
     Description, 
     AccountDesc, 
     Year, 
     Month, 
     Sum(TotalHrs) as TotalHrs, 
     Sum(Amount) as Amount 
from vwPayroll 
where LocationID in (select value from dbo.ParmsToList(@PayrollLocIds)) 
and Year = @PayrollYear and Month = @PayrollMonth 
group by LocationID, Description, AccountDesc, Year, Month 
+0

Если это часть хранимой процедуры, вы можете dump результаты запроса в таблицу temp. И используйте временную таблицу для выполнения UNION для среднего (вместо того, чтобы дважды выполнять запрос с SUM (...)). – shahkalpesh

+0

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

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