Почему PostgreSQL ругается?
А почему PostgreSQL не должен ругаться на диалект DB2? Разные СУБД, разные диалекты. Не всё, что возможно в одной СУБД, напрямую переносится в другую.
Хотите, чтобы запросы работали везде более-менее одинаково - используйте подмножество ANSI (SQL-89 или SQL-92). Хотите переносить нативные запросы из одной СУБД в другую - изучайте обе и ищите аналоги команд/функций/опций.
А почему не должен ругаться?
Ни малейших представлений что это за синтаксис такой.