Столбец Postgres должен появляться в предложении GROUP BY или использоваться в статистической функции. - PullRequest
0 голосов
/ 25 апреля 2019

Я пытаюсь исправить запрос, чтобы сделать его совместимым как с Oracle, так и с Postgres. Но тот же запрос работает в Oracle, а не в Postgres. Пример запроса упрощен и не имеет реального значения, но это хороший пример, чтобы показать проблему, которую я пытаюсь решить.

Версия Postgres: 11.2, версия oracle: 12.1.0.2.0

Таблица платежей имеет два столбца (payment_id, сумма);

Таблица пользователей имеет один столбец (user_id);

Запрос 1:

select p.amount, (select min(p.payment_id) from payments, users where p.payment_id = payments.payment_id) 
from payments p, users;

Ошибка в postgres: столбец «p.amount» должен присутствовать в предложении GROUP BY или использоваться в статистической функции

Запрос 2:

select (select min(p.payment_id) from payments, users where p.payment_id = payments.payment_id) from payments p, users;

Ошибка в postgres: подзапрос использует несгруппированный столбец "p.payment_id" из внешнего запроса

Кто-нибудь знает, почему вышеупомянутые два запроса работают в oracle, но не в postgres?

1 Ответ

0 голосов
/ 26 апреля 2019

Убедитесь, что данные в платежах упорядочены правильно, но при этом будут удалены повторяющиеся наблюдения payment_id:

выберите a.user_id, a.payment_id, b.amount от пользователей внутреннее объединение (выберите отдельно для (payment_id) payment_id, сумма из платежей) b на a.payment_id = b.payment_id ;

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