Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?

Официальный форум Simple-Scada.

Автор Тема: Объединение отчетов  (Прочитано 1623 раз)

Denis_ger

  • Новичок
  • *
  • Сообщений: 20
    • Просмотр профиля
Объединение отчетов
« : 09 Апреля 2024, 16:10:18 »
В отчетах не получается сделать объединение двух таблиц в одну. Опишу упрощенную структуру в Stimulsoft Reports:
Есть GroupHederBand1 в нем databand1 с именем матрицы и массой отхода, далее GroupFooterBand1 где эти данные группируются по имени матрицы. После этого идет GroupHederBand2  в нем databand2 с именем матрицы и массой заготовки, далее GroupFooterBand2 где эти данные группируются по имени матрицы. Имена матриц одинаковые для обоих databand, при этом databand1 и databand2 опираются на разные источники данных, так что объединить их до группировки, в один источник, я не могу.
Я хочу получить не 2 таблицы, а одну - с именем, отходом и заготовкой. Есть ли способ соединить 2 итога группы в один? Пробовал ставить оба databand в одну группировку, но итог тогда ничего вообще не отображает. Читал в www.stimulsoft.com/documentation про таблицы, связи, кросс-таблицы, вложенные отчеты и группы в группах, это все не помогло.
С какой стороны курить мануал? Каким путем решается такая задача?

Simple Scada

  • Глобальный модератор
  • *****
  • Сообщений: 285
    • Просмотр профиля
    • Simple-Scada
Re: Объединение отчетов
« Ответ #1 : 10 Апреля 2024, 13:55:36 »
Здравствуйте.

Если эти данные Вы получаете из собственных таблиц в БД, то с помощью соответствующего SQL-запроса можно сразу получить необходимую таблицу с объединением по имени матриц и суммой массы отхода и заготовки. Например, имеются таблицы:
Table A:
Name            Mass
Workpiece_1  100
Workpiece_2  200
Workpiece_3  300
Workpiece_1  300
Workpiece_2  200
Workpiece_3  100

Table B:
Name            Mass
Workpiece_1  10
Workpiece_2  20
Workpiece_3  30
Workpiece_1  30
Workpiece_2  20
Workpiece_3  10

Тогда в отчет можно добавить свой источник данных и с помощью SQL-запроса:
Код: (sql)
SELECT A.Name, SUM(A.Mass) AS sum_WasteMass, b.SW AS sum_WorkpieceMass
FROM A
INNER JOIN
  (SELECT Name, SUM(Mass) AS SW FROM B GROUP BY Name) b ON b.Name = A.Name
GROUP BY Name
выполнить выборку необходимой информации (см. скриншот "SQL"). В итоге получаем сразу готовый результат (см. скриншот "Report").

Denis_ger

  • Новичок
  • *
  • Сообщений: 20
    • Просмотр профиля
Re: Объединение отчетов
« Ответ #2 : 10 Апреля 2024, 15:14:50 »
С SQL понятно. Но это источники по изменению из штатной базы скады. Один снимает данные в момент возникновения отхода, а другой в момент возникновения заготовки. Объединять в один источник который смотрит изменение того и другого я пробовал, выходит каша, потому что значения повторяются и нельзя посчитать сумму. И поделить на 2 нельзя, потому что один отход - это не обязательно одна заготовка, может 2 или 3.
Есть ли способ для штатных источников по изменению?

Для собственной базы я бы даже не использовал GroupBand, а группировал в запросе. Но мне нужен как раз штатный источник к сожалению
« Изменён: 10 Апреля 2024, 15:39:17 от Simple_Scada »