Как отобразить денежное выражение в PostgreSQL

Мой запрос к базе данных приведен ниже, но я все еще не могу правильно отобразить денежное выражение. Помогите, пожалуйста.

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
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
0
0
295
1

Ответы 1

Вы действительно не сказали, в чем была ваша проблема, но если вы используете модификатор формата FM, как в

SELECT to_char(12345.67, '$99,999,999.99FM');

  to_char   
------------
 $12,345.67
(1 row)

результат может быть вам больше по душе.

Чтобы запрос работал без ошибок, добавьте в конце предложение GROUP BY, например

... GROUP BY money

Я все время получаю такую ​​ошибку: ОШИБКА: столбец «orders.quantity» должен появиться в предложении GROUP BY или использоваться в агрегатной функции LINE 2: to_char (orders.quantity * products.price, '99 999 999,99') ...

Schl1mazl 20.10.2018 06:41

О, я вижу. Это было просто.

Laurenz Albe 20.10.2018 06:45

Получаю 31295, когда не ставил денежный формат. Предложение GROUP BY сработало, но я получаю другое значение.

Schl1mazl 20.10.2018 06:55

Нет, форматирование тут ни при чем. Вы, вероятно, получите дубликаты, потому что присоединитесь к трем столам. Но это другой вопрос, правда?

Laurenz Albe 20.10.2018 06:57

Другие вопросы по теме