我正在尝试从2个单独的表中提取数据,但只提取特定列,然后我进行连接,这样每个客户端只显示一行,并显示其付款总额,但信息未显示。代码如下。它适用于报告页面,因此请考虑确定所有付款的总和。我知道我在寻找什么,我只是觉得可能在查询中有一个我似乎无法捕获的错误。如果可能的话,我可以使用额外的一双眼睛来指出这个缺陷。感谢
SELECT pre.id, pre.loanAmount, pre.custId,
SUM(pay.amount) AS amount,
DISTINCT(pay.company) AS company,
DISTINCT(pay.loanId) AS loanId
FROM preQualForm pre INNER JOIN
payments pay
ON pre.custId=pay.custId
答案 0 :(得分:1)
DISTINCT
关键字适用于您SELECT
的所有列,
所以如果你还需要像SUM
这样的聚合函数,
然后在非聚合列上使用GROUP BY
子句可以更好地实现。
以下情况应该有效。
SELECT
pre.id
, pre.loanAmount
, pre.custId
, SUM(pay.amount) AS Amount
, pay.company AS Company
, pay.loanId AS LoanId
FROM preQualForm pre
INNER JOIN payments pay
ON pre.custId = pay.custId
GROUP BY
pre.id
, pre.loanAmount
, pre.custId
, pay.company
, pay.loanId
答案 1 :(得分:0)
对于初学者来说,你错过了GROUP BY
条款。 (可能还有其他问题,但我们需要数据和预期输出)
SELECT pre.id, pre.loanAmount, pre.custId, SUM(pay.amount) AS amount,
DISTINCT(pay.company) AS company,
DISTINCT(pay.loanId) AS loanId
FROM preQualForm pre
INNER JOIN payments pay
ON pre.custId=pay.custId
GROUP BY pre.id, pre.loanAmount, pre.custId
答案 2 :(得分:0)
DISTINCT()
不是SQL中的函数(至少不是我熟悉的任何方言)。我将从这个查询开始:
SELECT pre.custId, SUM(pay.amount) AS amount
FROM preQualForm pre INNER JOIN
payments pay
ON pre.custId = pay.custId
GROUP BY pre.custId;
它似乎会回归你想要的东西。如果这不能返回您真正想要的所有信息,您可以增强它。