powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Отчетные системы [игнор отключен] [закрыт для гостей] / SSRS 2008. Суммировать только одно значение из группы
6 сообщений из 6, страница 1 из 1
SSRS 2008. Суммировать только одно значение из группы
    #37199935
Leiten
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте, коллеги!
Помогите пожалуйста подсчитать такой итог: брать только по одному значению из каждой группы по строчкам и суммировать.

Вот картинка:
...
Рейтинг: 0 / 0
SSRS 2008. Суммировать только одно значение из группы
    #37200618
Leiten,

Можно на стороне самого SQL-сервера, использую group by rollup или cube Когда-то находил пример:
9904980
...
Рейтинг: 0 / 0
SSRS 2008. Суммировать только одно значение из группы
    #37201672
Leiten
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я решил так поступить. Добавил такое поле в селекте:

Код: plaintext
1.
2.
3.
CASE WHEN row_number() over (PARTITION BY ean_name ORDER BY goods_id) =  1  THEN Stock_after_action
ELSE NULL 
END AS Stock_after_action_For_Sum

Обращение к Оракловой базе.
А в отчете в итоговой ячейке просто суммирую по этому столбцу.
...
Рейтинг: 0 / 0
SSRS 2008. Суммировать только одно значение из группы
    #37205432
rokstar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть возможность сделать это средствами репортинга.

Можно сделать через вычисляемые поля, но т.к. репортинг не позволяет использовать в них групповые функции (оно и понятно) - приходится писать свою кастомную функцию.

Короче:

1. Добавляем в отчет Custom Code
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
Public Dim ScopeAgg As String

Public Function Dedup(ByVal Scope as String, ByVal Val as Integer) As Integer
  Dim Result as Integer
  Result =  0 
  If InStr( 1 , ScopeAgg, Scope) =  0  Then
    Result = Val
  End If
  ScopeAgg = ScopeAgg + Scope
  Return Result
End Function

2. Создаем Calculation Field в датасете, в expression пишем:
Код: plaintext
1.
=Code.Dedup(Fields!GroupName.Value, CInt(Fields!MyValue.Value))

Этими двумя пунктами исключаем повторный вывод значения для группы.

3. Там где хотим посчитать итог пишем:
Код: plaintext
1.
="Итого (" & Sum(Fields!MyCalcField.Value) & ")"

Сбособ может быть малость извращенный, но другого лично я пока не нашел, если у кого-то есть более красивый салюшн - отпишитесь!
...
Рейтинг: 0 / 0
SSRS 2008. Суммировать только одно значение из группы
    #37206548
minya13_85
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LeitenЯ решил так поступить. Добавил такое поле в селекте:

Код: plaintext
1.
2.
3.
CASE WHEN row_number() over (PARTITION BY ean_name ORDER BY goods_id) =  1  THEN Stock_after_action
ELSE NULL 
END AS Stock_after_action_For_Sum

Обращение к Оракловой базе.
А в отчете в итоговой ячейке просто суммирую по этому столбцу.
Можно было сделать намного проще..Вы группируете по полю EAN name, а вы добавьте в группировку =EAN name & StockAfterAction раз у вас у группы- сумма одинаковые. А потом просто суммируете свои подгруппы.
...
Рейтинг: 0 / 0
SSRS 2008. Суммировать только одно значение из группы
    #37212792
Leiten
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Коллеги, спасибо за ответы!

minya13_85 , немного не понял вашей идеи. Зачем ещё добавлять StockAfterAction, если оно и так в рамках группы у всех одинаково?

rokstar , для меня пока программный код в SSRS вещь новая, никогда не доводилось прибегать к нему. А времени на реализацию отчёта катастрофически мало было. Потому всё-таки использовал метод, который был ближе.

Спасибо!
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Отчетные системы [игнор отключен] [закрыт для гостей] / SSRS 2008. Суммировать только одно значение из группы
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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