嵌套SQL SUM与WHERE子句

时间:2017-05-24 09:39:59

标签: sql nested-query

我试图计算一天内售出的商品的成本和一天内给出的总折扣。

表格结构

sale Table
invoice_no | bill_date | discount | ...

子表是(invoice_no是带销售表的FK)

sale_items Table
invoice_no | item_no | cost_price | qty

此查询正常

SELECT (SELECT SUM(p.cost_price*p.qty) FROM sale_items p
        WHERE p.invoice_no=s.invoice_no) as tcost_amount
 FROM sale s
 WHERE bill_date= '2017-05-26'

但是当我想从父表中计算折扣时,tcost_amount总结了子表中没有bill_date条件的所有行,我很困惑。

SELECT SUM(discount), (SELECT SUM(p.cost_price*p.qty)
                       FROM sale_items p
                       WHERE p.invoice_no=s.invoice_no) as tcost_amount
FROM sale s
WHERE bill_date= '2017-05-26'

我的问题是为什么bill_date= '2017-05-26'条件在第二种情况下不适用于sale_items

1 个答案:

答案 0 :(得分:1)

至少,您需要加入表格。像这样的东西:

select (sum(si.cost_price * si.qty) - s.discount)
from sale s
inner join sale_items si on si.invoice_no = s.invoice_no
where s.bill_date = '2017-05-26'