Sql 我想按客户获取销售额,并按不同的付款方式分组

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

我的数据库模式名是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_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_name
SELCT*
GROUP BY
将永远不起作用。这不是正确的代码。它显示了您所说的查询的正确输出,但我的查询是获取销售订单,并以不同的付款方式分组