Я думаю, что вы могли бы переписать это так (но я могу неправильно прочитать ваше утверждение)
FROM
TABLE_A A LEFT OUTER JOIN TABLE_B HIST ON
HIST.COL1 = A.COL1
LEFT OUTER JOIN TABLE_D H ON
H.COL3 = A.STATE
LEFT OUTER JOIN TABLE_C B ON H.COL2 = B.COL2
WHERE
A.BRANCH = 'Data'
Также в документации IBM об этой ошибке говорится:
Предложение ON, связанное с оператором JOIN или в операторе MERGE, недопустимо.
Объяснение:
Ссылки на столбцы в предложении ON должны ссылаться только на столбцы таблиц, которые находятся в области действия предложения ON.
Так что я могу ошибаться, это просто выглядит как ошибочное предложение ON, когда внешнее соединение "H.COL3 = A.STATE" выходит за рамки предложения On, поскольку таблица A не входит в эту область.