Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Отчетные системы [игнор отключен] [закрыт для гостей] / MS Reporting Services 2005. Сумма повторяющихся значений в группе / 7 сообщений из 7, страница 1 из 1
16.03.2010, 19:29
    #36524728
nicht_shiessen
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MS Reporting Services 2005. Сумма повторяющихся значений в группе
Добрый вечер!

Предположим, есть такие данные

Уровень параметр1 параметр2group1 13 group21 5 Item1 4 1Item1 4 2Item1 4 3Item2 1 4Item2 1 5group22 8 Item3 1 6Item3 1 7Item4 7 8Item4 7 9

Т.е. параметр1 у итема(i) всегда одинаков.

Можно ли каким-то гуманным образом получить в поле "параметр1" у групп сумму не по всем значениям этого поля из детализации, а по "уникальным", т.е. если я сейчас напишу к примеру в группе 21 Sum(Field!Item) он мне честно выдаёт 12. А нужно именно 4.

Пока ничего умнее не придумалось, кроме как суммировать число повторений Item'a и делить вычислять как Sum(Field!Item/!Field.ItemCount). Но что-то мне такой метод не нравится ни разу.
...
Рейтинг: 0 / 0
16.03.2010, 19:33
    #36524742
nicht_shiessen
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MS Reporting Services 2005. Сумма повторяющихся значений в группе
nicht_shiessenДобрый вечер!
он мне честно выдаёт 12. А нужно именно 4.

ну в смысле, он мне честно выдаёт 14. А нужно именно 5.
...
Рейтинг: 0 / 0
16.03.2010, 20:23
    #36524820
Halfling
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MS Reporting Services 2005. Сумма повторяющихся значений в группе
nicht_shiessen, я думаю стоит написать свою функцию
Использование в выражениях ссылок на пользовательский код
...
Рейтинг: 0 / 0
17.03.2010, 06:28
    #36525186
rus77
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MS Reporting Services 2005. Сумма повторяющихся значений в группе
По моему то что вы хотите получить проще делать в запросе перед REPORTING, а потом уже полученный результат выводит в RS, если есть запрос представьте попробуем помочь ...
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
22.05.2012, 09:58
    #37805180
Semen_v.2.01
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MS Reporting Services 2005. Сумма повторяющихся значений в группе
Товарищи!

Есть аналогичная проблема, подскажите, пожалуйста, как бы это реализовать.
Запрос:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
SELECT     FilteredTask.subject, FilteredTask.new_segmentname, FilteredTask.new_plan_volume, FilteredTask.createdon, FilteredTask.owneridname, derivedtbl_1.notetext, 
                      FilteredTask.scheduledend, FilteredTask.scheduledstart, FilteredTask.regardingobjectidname, Filterednew_segments.new_weigth, 
                      Filterednew_segments.new_name
FROM         FilteredTask LEFT OUTER JOIN
                      Filterednew_segments ON Filterednew_segments.new_segmentsid = FilteredTask.new_segment LEFT OUTER JOIN
                          (SELECT     t1.objectid, FilteredAnnotation.notetext
                            FROM          (SELECT     MAX(createdon) AS Expr1, objectid
                                                    FROM          FilteredAnnotation AS table1
                                                    GROUP BY objectid) AS t1 INNER JOIN
                                                   FilteredAnnotation ON t1.objectid = FilteredAnnotation.objectid AND t1.Expr1 = FilteredAnnotation.createdon) AS derivedtbl_1 ON 
                      derivedtbl_1.objectid = FilteredTask.activityid
WHERE     (MONTH(FilteredTask.scheduledend) = @month) AND (FilteredTask.ownerid IN (@user)) AND (YEAR(FilteredTask.scheduledend) = YEAR({ fn NOW() })) OR
                      (FilteredTask.ownerid IN (@user)) AND (YEAR(FilteredTask.scheduledend) = YEAR({ fn NOW() })) AND (MONTH(FilteredTask.scheduledstart) = @month) OR
                      (MONTH(FilteredTask.scheduledend) > @month) AND (FilteredTask.ownerid IN (@user)) AND (YEAR(FilteredTask.scheduledend) >= YEAR({ fn NOW() })) AND 
                      (MONTH(FilteredTask.scheduledstart) < @month) AND (YEAR(FilteredTask.scheduledstart) >= YEAR({ fn NOW() }))



в самом отчете группирую по FilteredTask.new_segmentname , которому соответствует свой Filterednew_segments.new_weigth
после добавления итогов, разумеется, он считает общую сумму (см. приложенный файл - итого = 60, а должно быть 40)
как бы так поменять запрос, чтобы он показывал нужную сумму?

заранее благодарю
...
Рейтинг: 0 / 0
22.05.2012, 13:12
    #37805701
user89
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MS Reporting Services 2005. Сумма повторяющихся значений в группе
Semen_v.2.01как бы так поменять запрос, чтобы он показывал нужную сумму?Через rollup или cube
Примеры
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
declare @tovari table (tovar varchar(100), sklad varchar(100), kol integer)
insert @tovari values ('Мука', 'Склад1', 100), ('Сахар', 'Склад1', 300), ('Мука', 'Склад2', 200), ('Сахар', 'Склад2', 100)

-- Просто итоги внизу
select
case when grouping(tovar) = 1 then 'Супер Итого:' else tovar end [Товар],
isnull(sklad,'') [Склад],
sum(kol) [Количество]
from @tovari
group by rollup (tovar, sklad)
having grouping (tovar) = 1 or grouping (sklad) = 0


-- Итоги наверху
select isnull(tovar,'Супер итого:') [Товар] , 
case when grouping (tovar) = 1 and grouping (sklad) = 1 then '' when grouping (sklad) = 0 then sklad else 'Итого ' + tovar end [Склад], 
sum(kol) [Количество]
--,grouping (tovar), grouping (sklad)
from @tovari
group by rollup(tovar, sklad)
order by grouping(tovar)desc, tovar, grouping(sklad)desc



-- Перед итоговой строкой, что получается через rollup, вставить пустую строку
set nocount on
set dateformat mdy

declare @pumps table (data datetime, worktime integer, count_on integer)
insert into @pumps values('02/10/2010',23,12);
insert into @pumps values('02/11/2010',44,19);
insert into @pumps values('02/12/2010',55,46);
insert into @pumps values('02/13/2010',66,48);
insert into @pumps values('02/14/2010',77,44);

select data [Дата], s [worktime], c [count_on] --, ord
from
(
	select 1+2 * grouping(data) ord, isnull(convert(varchar,data,104), 'Итого:') data, sum(worktime) s, sum(count_on) c
	from @pumps
	group by rollup (data)
    union all
	select 2,null,null,null
) t
order by ord

-- Или так, без rollup, но таблица сканируется дважды
select convert(varchar,data,104), worktime, count_on from @pumps
union all
select null, null, null
union all
select 'Итого:', sum(worktime), sum(count_on) from @pumps



Пример посложнее, когда-то находил:
9904980
...
Рейтинг: 0 / 0
07.06.2012, 17:49
    #37829996
Semen_v.2.01
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MS Reporting Services 2005. Сумма повторяющихся значений в группе
user89,

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


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