1. ホーム
  2. sql

[解決済み] SQLクエリで2つの列から値を引き算する

2022-01-31 15:30:13

質問

2つの列があり、それらを引き算したいのですが。私は[payment]カラムを合計し、[total_bill]カラムから引き算しようとしています。下記は私のコードですが、集約またはサブクエリを含む式に対して集約関数を実行できないというエラーが発生します。

SELECT SUM((bill_record.total_bill)-SUM(invoice_payments.payment)) AS [LEFT AMOUNT] 

解決方法は?

group by を使用する必要がありますが、おそらく支払額を合計し、単一の合計請求額からそれらを差し引くだけでしょう。

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


WHERE句でフィルタリングしているため、ここでgroup byが機能することに注意してください。複数の請求書の結果を取得したい場合は、一意の請求書識別子でグループ化し、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