Sql 我想按客户获取销售额,并按不同的付款方式分组
我的数据库模式名是WarehouseManagement,我在PostgreSql中做这项工作,我的数据库设计是 我的问题是 获取销售订单并按不同的付款方式分组Sql 我想按客户获取销售额,并按不同的付款方式分组,sql,postgresql,Sql,Postgresql,我的数据库模式名是WarehouseManagement,我在PostgreSql中做这项工作,我的数据库设计是 我的问题是 获取销售订单并按不同的付款方式分组 SELECT s.* FROM warehousemanagement.tbl_sales AS s INNER JOIN warehousemanagement.tbl_payment as p ON s.sales_id = p.transaction_id INNER JOIN warehousemanagement.tbl_p
SELECT s.* FROM warehousemanagement.tbl_sales AS s INNER JOIN warehousemanagement.tbl_payment as p
ON s.sales_id = p.transaction_id INNER JOIN warehousemanagement.tbl_paymentmethod
AS pm ON p.paymentmethod_id = pm.paymentmethod_id GROUP BY pm.payment_method;
它显示错误:
ERROR: column "s.sales_id" must appear in the GROUP BY clause or be used in an aggregate function
LINE 1: select s.* from warehousemanagement.tbl_sales as s inner joi...
^
SQL state: 42803
Character: 8
你似乎想要这样的东西:
select s.contact_no, pm.payment_method, sum(pm.amount)
from warehousemanagement.tbl_sales s inner join
warehousemanagement.tbl_payment p
on s.sales_id = p.transaction_id inner join
warehousemanagement.tbl_paymentmethod pm
on p.paymentmethod_id = pm.paymentmethod_id
group by s.contact_no, pm.payment_method;
这将按每个客户的不同付款方式对金额进行合计。您的错误消息与您的查询不匹配-您的查询中没有GROUP by,而是在错误消息中。请向我们展示生成错误的真实查询,不相关,但是:您显示的错误是由于将
付款
拼写为付款
,但它与您的查询不匹配,因为@a_horse_,并且没有说明名称。我编辑了我的Question@a_horse_with_no_nameSELCT*
和GROUP BY
将永远不起作用。这不是正确的代码。它显示了您所说的查询的正确输出,但我的查询是获取销售订单,并以不同的付款方式分组