Итерация по списку, чтобы найти объект равны - PullRequest
0 голосов
/ 28 августа 2018

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

ID1 - table1 (unique)
ID2 - table2 (unique)
type - table2 
AMt3 - table2

мой окончательный набор результатов выглядит так:

ID1       ID2   Type    AMT

1835748   21987   9     4

1835748   12898   26    5

1835748   21986   26    5

2242186   21421   1    11

2242186   21422   1    20

2242186   21988   1    30

Теперь я просмотрел эти данные и суммировал сумму, в которой тип и ID1 совпадают.

В приведенном выше примере row1 - остается как в строка 2 + 3 - сумма добавляется и возвращается строка 4 + 5 + 6 - сумма возвращается

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

Возможно ли добиться этого с помощью запроса? Я дал простое представление на данный момент, запрос является более сложным.

или, если это можно сделать, я Java-код? Как мне этого добиться?

Ответы [ 2 ]

0 голосов
/ 06 сентября 2018

Спасибо Макс! Это работает!

Вы можете сделать это уже в SQL. Используйте GROUP BY и MAX ().

SELECT T1.ID1, T2.TYPE, МАКС. (T2.ID2) ID2, СУММА (T2.AMT) AMT ОТ GROUP BY T1.ID1, T2.TYPE; Замените на вашу операцию соединения. И, возможно, измените MAX () на MIN (), если вам нравится наименьший ID2, а не наибольший. Или оставить все это вместе.

0 голосов
/ 28 августа 2018

Вы можете сделать это уже в SQL. Используйте GROUP BY и MAX().

SELECT T1.ID1,
       T2.TYPE,
       MAX(T2.ID2) ID2,
       SUM(T2.AMT) AMT
       FROM <your join>
       GROUP BY T1.ID1,
                T2.TYPE;

Замените <your join> операцией соединения. И, возможно, измените MAX() на MIN(), если вам нравится наименьшее значение ID2, а не наибольшее. Или оставьте все это вместе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...