Мой запрос к базе данных приведен ниже, но я все еще не могу правильно отобразить денежное выражение. Помогите, пожалуйста.
SELECT SUM (orders.quantity * products.price) as total,
to_char((orders.quantity * products.price), '$99,999,999.99') AS money
FROM
orders
inner join products on products.id = orders.products_id
inner join customers on customers.id = orders.customers_id
WHERE order_date BETWEEN CURRENT_DATE - INTERVAL '30 days'
AND CURRENT_DATE + INTERVAL '1 days';
Моя проблема в том, что я получаю эту ошибку:
ERROR: column "orders.quantity" must appear in the GROUP BY clause or be used in an aggregate function
Вы действительно не сказали, в чем была ваша проблема, но если вы используете модификатор формата FM
, как в
SELECT to_char(12345.67, '$99,999,999.99FM');
to_char
------------
$12,345.67
(1 row)
результат может быть вам больше по душе.
Чтобы запрос работал без ошибок, добавьте в конце предложение GROUP BY
, например
... GROUP BY money
О, я вижу. Это было просто.
Получаю 31295, когда не ставил денежный формат. Предложение GROUP BY сработало, но я получаю другое значение.
Нет, форматирование тут ни при чем. Вы, вероятно, получите дубликаты, потому что присоединитесь к трем столам. Но это другой вопрос, правда?
Я все время получаю такую ошибку: ОШИБКА: столбец «orders.quantity» должен появиться в предложении GROUP BY или использоваться в агрегатной функции LINE 2: to_char (orders.quantity * products.price, '99 999 999,99') ...