我有 2 张桌子,客户和 Trans。
Customer
---------
c_id | cName | cSurname | cPbx | cGsm | cLastVisitDate
Trans
------
t_id | c_id | tDate | tPaymentAmount | tSaleAmount
我想选择债务大于零且自给定日期以来未进行交易的客户。
例如“列出自 2012 年 1 月 20 日以来欠债且未访问过的客户”
这就是我试图解决的方法,但它不起作用。
select Customer.c_id, SUM (saleAmount - paymentAmount) as totalDebt,
cLastVisitDate,
cName,
cSurName,
cPbx,
cGsm
from Customer, Trans
where customer.c_id = trans.c_id AND cLastVisitDate < ?
这给出了以下错误。
'CUSTOMER.C_ID' 无效。当 SELECT 列表至少包含一个聚合时,所有条目都必须是有效的聚合表达式。
我也找到了一个解决方案,它将查询与非聚合列分组cLastVisitDate cName cSurname cPbx cGsm
。
select Customer.c_id, SUM (saleAmount - paymentAmount) as totalDebt,
cLastVisitDate,
cName,
cSurName,
cPbx,
cGsm
from Customer, Trans
where customer.c_id = trans.c_id AND cLastVisitDate < ?
group by customer.c_id, cLastVisitDate cName cSurname cPbx cGsm
此解决方案有效,但似乎不是优雅的方法。有没有更优雅和更简单的方法来完成这项任务?