Создать несколько строк отчета из одной строки данных - PullRequest
1 голос
/ 07 марта 2012

Меня попросили создать отчет, сгруппированный по значениям в нескольких столбцах в одной строке из базы данных SQL. Например

Employee Name | Type1Column1 | Type1Column2 | Type2Column1 | Type2Column2
John Doe      | 0.00         | 10.00        | 20.00        | 20.00

Report Output

Name          | Type      | Total
John Doe      | Type1     | 10.00
              | Type2     | 40.00

Я надеюсь, что вы поняли идею, и нет, я не спроектировал таблицу, и нет, я не могу изменить ее, но я мог бы настроить хранимую процедуру, которая производит вывод ...

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

Кто-нибудь знает, как мне этого добиться в SSRS 2008R2?

Заранее спасибо.

Ответы [ 2 ]

3 голосов
/ 07 марта 2012

Можете ли вы применить оператор UNPIVOT к запросу, возвращающему этот вывод?

select
EmployeeName, 
case
    when Type like 'Type1%'
    then 'Type1'
    else 'Type2'
end TypeCol,
Total 
from (select EmployeeName, Type1Column1, Type1Column2, Type2Column1, Type2Column2
     from storedprocdata ) as f
unpivot (Total for Type in (Type1Column1, Type1Column2, Type2Column1, Type2Column2)
) as u

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

Затем вы можете сделать совокупную сумму для столбца Total в отчете SSRS.

1 голос
/ 07 марта 2012

Оператор unpivot должен быть более гибким, но (расширяя комментарий Jamie F по этому вопросу) можно было бы сделать это, установив 5 строк подробностей (по одной для каждого типа) и установив выражение для столбца Total вбыть похожим на:

=Fields!Type1Column1.Value+ Fields!Type1Column2.Value+ Fields!Type1Column3.Value+
 Fields!Type1Column4.Value+ Fields!Type1Column5.Value+ Fields!Type1Column6.Value+
 Fields!Type1Column7.Value

- для строки подробностей типа 1, с похожими выражениями для каждой из последующих строк подробностей типа.

...