簡體   English   中英

SQL Group通過防止對多個記錄求和

[英]SQL Group by prevents summing across multiple records

我正在嘗試匯總“付款”表中多個條目的已付款金額,並顯示誰是該訂單的買方

因此,如果兩個人在一張訂單上付款,則將顯示他們的總付款並顯示誰是付款人。 因此,如果Bob和Sue在一張30美元的鈔票上付了10美元,它將顯示

Order Buyer Paid Owes  
1     Bob   20   10
1     Sue   20   10

但我目前在

Order    Paid Owes  
1        20   10

如何添加買家? 可能加入? 目前我有。

Select Order.Orderid, sum(Payment.amount) as "Paid", Order.Price-sum(Payment.amount) as "Owes"
from order, payment
where payment.orderId = order.orderid 
group by (order.orderid, order.price)

由於付款是m對n的關系,因此付款具有BuyerId和orderid作為外鍵。

正如您在評論中提到的,當您加入買方時,它不會給您所需的輸出,即所有付款的總和。 要獲得買家和所有付款的總和,並加入付款表的另一個實例,並使用該總和來計算總和,就可以了。

SELECT
    Order.Orderid,
    Buyer.Name,
    SUM(PaymentSum.amount) AS 'Paid',
    Order.Price-SUM(PaymentSum.amount) AS 'Owes',
FROM
    Order
    JOIN Payment
        ON Order.Orderid = Payment.Orderid
    JOIN Buyer
        ON Payment.BuyerId Buyer.BuyerId
    JOIN Payment AS PaymentSum
        ON Order.Orderid = PaymentSum.Orderid
GROUP BY
    Order.Orderid,
    Order.Price,
    Buyer.Name

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM