Здесь есть пара вещей.
Прежде всего - в DB2 при использовании GROUP BY
вы можете выбрать только те столбцы, которые перечислены в операторе группировки - все остальное должно быть частью функции агрегирования. Таким образом, группировка по a.Id
и упорядочение по a.Column_B
не будут работать - вам нужно будет заказать по SUM(a.Column_B)
или что-то еще применимо.
Во-вторых ... ваш запрос может использовать немного работы в общем смысле - в частности, вы дважды присоединяетесь к себе, что вам вообще не нужно делать. Попробуйте вместо этого:
SELECT a.Id, SUM(a.Column_B) as total, SUM(a.Column_C)
FROM a
WHERE a.Column_D in (X, Y, Z, 'Something')
OR EXISTS (SELECT '1'
FROM b
WHERE b.Column_A = a.Column_A
AND b.Column_B = 'Something')
GROUP BY a.Id
ORDER BY total DESC
FETCH FIRST 1 ROW ONLY
Замените функцию SUM
на все, что подходит.