powered by simpleCommunicator - 2.0.39     © 2025 Programmizd 02
Форумы / Отчетные системы [игнор отключен] [закрыт для гостей] / Вопрос о ссылке на отображаемые поля в SSRS
4 сообщений из 4, страница 1 из 1
Вопрос о ссылке на отображаемые поля в SSRS
    #38048151
eldarkt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день!

Есть таблица со значениями ([статья], [тип(два возможных значения)], [стоимость],[год(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
Вопрос о ссылке на отображаемые поля в SSRS
    #38049981
Фотография user89
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Вопрос о ссылке на отображаемые поля в SSRS
    #38050044
chimichang
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
d
...
Рейтинг: 0 / 0
Вопрос о ссылке на отображаемые поля в SSRS
    #38051002
eldarkt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
user89, я примерно второй вариант из вами предложенных в итоге выбрал.
Хм, а про функцию Last проглядел, гляну, будет ли полезна, спасибо!
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Отчетные системы [игнор отключен] [закрыт для гостей] / Вопрос о ссылке на отображаемые поля в SSRS
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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