Гость
Форумы / Отчетные системы [игнор отключен] [закрыт для гостей] / Вопрос о ссылке на отображаемые поля в SSRS / 4 сообщений из 4, страница 1 из 1
22.11.2012, 09:35
    #38048151
eldarkt
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос о ссылке на отображаемые поля в SSRS
Добрый день!

Есть таблица со значениями ([статья], [тип(два возможных значения)], [стоимость],[год(5 возможных значений)])
Задача:
Вывести значения сумм стоимости по годам в столбцах (т.е. фактически PIVOT) с группировкой по типу и по статье + последний столбец - разность между последними двумя значениями, т.е. в транзакте это выглядит так:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
SELECT [art-type], [article],  SUM([2009])  '2009',SUM([2010])  '2010',SUM([2011]) 
 '2011',SUM([2012])  '2012',SUM([2013])  '2013',  SUM([2013])-SUM([2012]) diff
FROM
(SELECT [art-type], [article], [cost],  YEAR FROM [reports].[dbo].[budget_all]
) RS
PIVOT
(SUM([cost])
FOR YEAR IN ([2009],[2010],[2011],[2012],[2013])
)
as PT
group by [art-type], [article]
order by 1,2



В SSRS (стандартными методами типа группы строк-группы столбцов) с ходу получилось красивое решение, но без последнего столбца - разности (Тупо из мастера, добавил [art-type] и [article] как группы строк и YEAR как группу столбцов).
Вот в этом и вопрос - как (и можно ли) в отчете SSRS после добавления "группы столбцов" (что есть тот же PIVOT, наверно) добавить и разность двух (последних) столбцов из этой группы?
...
Рейтинг: 0 / 0
23.11.2012, 10:08
    #38049981
user89
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос о ссылке на отображаемые поля в SSRS
eldarkt,

можно поиграться функцией Last

Если не получиться, то разность между последними двумя значениями, можно посчитать на SQL. Матрица потом сама развернет.
Тут год большой, чтобы матрица правильно отсортировала:
art-typearticlecostYearart-type 1article 11002009art-type 1article 11502010art-type 1article 21702011art-type 2article 12002009art-type 2article 22502010art-type 2article 22802011 art-type 1 article 1 20 4022 art-type 2 article 2 30 4022
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
declare @t table([art-type] varchar(50), [article] varchar(50), [cost] float, [Year] int)
insert @t values('art-type 1','article 1', 100, 2009), ('art-type 1','article 1', 150, 2010), ('art-type 1','article 2', 170, 2011),
('art-type 2','article 1', 200, 2009), ('art-type 2','article 2', 250, 2010), ('art-type 2','article 2', 280, 2011)

; with tmp as (
  select *, row_number() over(partition by [art-type] order by [year] desc) [rn]
  from @t
)
select * from @t
union all
select t1.[art-type], t1.[article], t2.cost - t1.cost [diff], t2.[year]*2 -- для сортировки, чтобы последним был
from tmp t1
left join tmp t2 on t1.[art-type] = t2.[art-type] and t1.rn-1 = t2.rn
where t2.rn = 1
...
Рейтинг: 0 / 0
23.11.2012, 10:41
    #38050044
chimichang
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос о ссылке на отображаемые поля в SSRS
d
...
Рейтинг: 0 / 0
23.11.2012, 17:03
    #38051002
eldarkt
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос о ссылке на отображаемые поля в SSRS
user89, я примерно второй вариант из вами предложенных в итоге выбрал.
Хм, а про функцию Last проглядел, гляну, будет ли полезна, спасибо!
...
Рейтинг: 0 / 0
Форумы / Отчетные системы [игнор отключен] [закрыт для гостей] / Вопрос о ссылке на отображаемые поля в SSRS / 4 сообщений из 4, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]