从sql查询中的两列中减去值

yas*_*ses 9 sql sql-server

有两列,我想减去它们。我正在尝试对 [付款] 列求和,然后从 [total_bill] 列中减去它。下面是我的代码,它给我错误,它无法对包含聚合或子查询的表达式执行聚合函数。

SELECT SUM((bill_record.total_bill)-SUM(invoice_payments.payment)) AS [LEFT AMOUNT] 
Run Code Online (Sandbox Code Playgroud)

Igo*_*gor 6

您需要使用分组依据,但您可能只想对付款求和并从单个总账单中减去这些付款。

SELECT bill_record.total_bill - SUM(invoice_payments.payment) AS [LEFT AMOUNT] 
FROM bill_record INNER JOIN invoice_payments ON bill_record.PKColumn = invoice_payments.FKColumn 
WHERE bill_record.PKColumn = @billId
GROUP BY bill_record.total_bill
Run Code Online (Sandbox Code Playgroud)

请注意,此处的 group by 有效,因为您也在 WHERE 子句中进行过滤。如果您想获取多个账单的结果,您还可以按唯一的账单标识符进行分组,并在 SELECT 中返回它。

SELECT bill_record.PKColumn AS BillId, bill_record.total_bill - SUM(invoice_payments.payment) AS [LEFT AMOUNT] 
FROM bill_record INNER JOIN invoice_payments ON bill_record.PKColumn = invoice_payments.FKColumn 
GROUP BY bill_record.PKColumn, bill_record.total_bill
Run Code Online (Sandbox Code Playgroud)