powered by simpleCommunicator - 2.0.35     © 2025 Programmizd 02
Форумы / Отчетные системы [игнор отключен] [закрыт для гостей] / SQL Report Builder (сложение с условвием)
12 сообщений из 12, страница 1 из 1
SQL Report Builder (сложение с условвием)
    #39562386
myrzilka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день.
Есть выгрузка SQL в таком виде
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
Подразделение	Проект	Видимость 	Задача

Производство	АА1	1	         Task1
Производство	АА1	1	         Task2
Производство	АА2	0	
Производство	АА3	0	
Производство	АА4	1	
Производство	АА5	1	         Task 3



Есть подразделения, в нем проекты, у каждого проекта есть признак Видимости, также у проекта может быть несколько задач, а может и не быть вовсе.

Надо получить отчет в таком виде
Код: sql
1.
2.
Подразделение	Кол-во видимых проектов
Производство	3



Но если просто складывать "1", то проект АА1 посчитается 2 раза. Номера задач убирать нельзя, т.к. они используются в этом же отчете для детализации.

Вопрос: можно ли как-то указать при группировке, чтобы складывать единички только у уникальных номеров проектов?
...
Рейтинг: 0 / 0
SQL Report Builder (сложение с условвием)
    #39562415
IDVT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В Total пишешь это:

Код: sql
1.
2.
3.
4.
=CountDistinct( Iif( Видимость = 1
                           , Fields!Проект.Value
                           , Nothing)
                      , "DataSourceName")
...
Рейтинг: 0 / 0
SQL Report Builder (сложение с условвием)
    #39562416
IDVT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
т.е. так: =)

Код: sql
1.
2.
3.
4.
=CountDistinct( Iif( Fields!Видимость.Value = 1
                           , Fields!Проект.Value
                           , Nothing)
                      , "DataSourceName")
...
Рейтинг: 0 / 0
SQL Report Builder (сложение с условвием)
    #39562424
Фотография user89
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
myrzilka,

на всякий случай, ещё вариант с SQL-запросом:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
declare @t table (podr varchar(500), projectName varchar(max), isVisible tinyint, taskName varchar(500))
insert @t values
('Производство', 'АА1', 1, 'Task1'),
('Производство', 'АА1', 1, 'Task2'),
('Производство', 'АА2', 0, ''),
('Производство', 'АА3', 0, ''),
('Производство', 'АА4', 1, ''),
('Производство', 'АА5', 1, 'Task 3')

;with tmp as (
  select podr, count(distinct projectName) [cnt]
  from @t
  where isVisible = 1
  group by podr
)
select t.*, tmp.cnt
from @t t
left join tmp on t.podr = tmp.podr
...
Рейтинг: 0 / 0
SQL Report Builder (сложение с условвием)
    #39562433
myrzilka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
IDVT,
Спасибо! Это работает как надо.
Выяснилось, что есть еще один показатель у него может быть значение не только 1, но и 2, 3 и т.д.

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
Подразделение   Проект  Видимость       Задача       Кол-во итераций

Производство    АА1     1                Task1                2
Производство    АА1     1                Task2                2
Производство    АА2     0                                     1
Производство    АА3     0                                     1
Производство    АА4     1                                     3
Производство    АА5     1                Task 3               3



Как посчитать "2" у проекта АА1 только один раз, чтоб получилось 2? Есть какие-то приемы?
...
Рейтинг: 0 / 0
SQL Report Builder (сложение с условвием)
    #39562438
IDVT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не совсем Вас понимаю, что подсчитать нужно и при каких условиях?
...
Рейтинг: 0 / 0
SQL Report Builder (сложение с условвием)
    #39562444
myrzilka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
IDVT,
Получить такую таблицу на выходе
Код: sql
1.
2.
Подразделение   Кол-во видимых проектов    Кол-во итераций
Производство    3                                  10




Если я сложу просто кол-во итераций, то получу 12 (по проекту АА1 посчитается 2 раза по 2), а правильная сумма 10.


CountDistinct тут не сработает(((
...
Рейтинг: 0 / 0
SQL Report Builder (сложение с условвием)
    #39562465
IDVT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Наверное так, сложно дать ответ не видя структуры отчета (группировки и т.д.)

Код: sql
1.
2.
3.
4.
=
Sum( Max( Fields!КолИтераций.Value
               , "Проект")
      , "Подразделение")
...
Рейтинг: 0 / 0
SQL Report Builder (сложение с условвием)
    #39562478
myrzilka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
IDVT,

Группировка идет по Подразделению, считаем кол-во видимых проектов и кол-во итераций в этом Подразделении.
Полагаю, если написать Sum( Max, то посчитается только одно максимальное значения в Подразделении, т.к. группировки по Проектам нет в итоговой таблице.
...
Рейтинг: 0 / 0
SQL Report Builder (сложение с условвием)
    #39562492
IDVT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Именно, так, либо добавлять группировку по проектам в отчет и использовать формулу

Код: sql
1.
2.
3.
4.
=
Sum( Max( Fields!КолИтераций.Value
               , "ИмяГруппыПроектов")
      , "ИмяГруппыПодразделений")



или нумеровать дубли, и брать в расчет суммы только с первым номером, но с этой задачей лучше справиться на стороне сервера Row_Number() Over( partition by ...)
...
Рейтинг: 0 / 0
SQL Report Builder (сложение с условвием)
    #39562499
IDVT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так понятнее будет....
...
Рейтинг: 0 / 0
SQL Report Builder (сложение с условвием)
    #39562580
myrzilka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
IDVT,
Да, спасибо большое! Это то, что нужно.
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Отчетные системы [игнор отключен] [закрыт для гостей] / SQL Report Builder (сложение с условвием)
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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