另一个表中的多行(与另一个表相关)记录的总和
Posted
技术标签:
【中文标题】另一个表中的多行(与另一个表相关)记录的总和【英文标题】:SUM of multi (relate to another table) rows record in another table 【发布时间】:2016-12-05 22:24:53 【问题描述】:我有两个表,一个 tblOrder 和 tblOrderDetail 表。
tblOrderDetail 包含以下行:
OrderDetailID OrderID Product Quantity UnitPrice Discount Total
1 1 ABC 10 $240.00 10 $2,160.00
2 2 CDF 100 $200.00 10 $18,000.00
3 3 GHI 200 $150.00 0 $30,000.00
4 1 XYZ 40 $100.00 5 $3,800.00
我希望 sql 查询获取 tblOrder 中的 Subtotal 列,这是来自 tblOrderDetail 的相关 OrderID Total 的总和,如下所示:
OrderID Sub Total
1 $5,960.00
2 $18,000.00
3 $30,000.00
我试试这个 sql 查询:
SELECT
OrderID
,(
SELECT
SUM(((tblOrderDetail.UnitPrice) - (tblOrderDetail.UnitPrice * (tblOrderDetail.Discount / 100))) * (tblOrderDetail.Quantity))
FROM
tblOrderDetail
WHERE tblOrderDetail.OrderID = tblOrder.OrderID
) AS [Sub Total]
FROM
tblOrder
但它给出了这个
OrderID Sub Total
1 $0.00
2 $0.00
3 $0.00
请注意,我希望 Sub Total 列是动态的,而不是 tblOrderDetail 表中 Total Column 的总和。
我希望有人能理解我所说的话,并希望能帮助我实现这一目标!
【问题讨论】:
为什么要使用方程式来查找总计,因为您的列中已经有字段 你想在计算总数后将结果集添加到 tblOrder 中吗? 正如我提到的,我有两个表 tblOrder 和 tblOrderDetail 我想在计算来自 tblOrderDetail 的值后将结果集(SubTotal)添加到 tblOrder 中,因为提到了我的查询,但它不起作用。 【参考方案1】:使用 Group by Clause 与 SUM 聚合函数,
Select *, sum(Total) as totalforOrder from ordertbl group by OrderID;
演示SQLFiddle
根据您的问题,这是一个相关查询
SELECT
tblOrder.OrderID
,(
SELECT
SUM(((tblOrderDetail.UnitPrice) - (tblOrderDetail.UnitPrice * (tblOrderDetail.Discount / 100))) * (tblOrderDetail.Quantity))
FROM
tblOrderDetail
WHERE tblOrderDetail.OrderID = tblOrder.OrderID
) AS SubTotal
来自 tblOrder;
它在SQLFiddle 上运行良好
【讨论】:
如果你想用方程式计算总数,那么看看这个演示:sqlfiddle.com/#!9/fb22e8/10 正如我提到的,我有两个表 tblOrder 和 tblOrderDetail 我想在计算来自 tblOrderDetail 的值后将结果集(SubTotal)添加到 tblOrder 中提到我的查询,但它不起作用。 @FC3D 我已经为你添加了相关查询,它工作正常,但我必须说使用内部连接或分组子句来更快更高效地获得结果集 感谢它的工作我在查询中遇到了另一个问题,这就是它不工作的原因实际上我有很多字段的大表,这就是为什么它无论如何都不能工作谢谢你的帮助:)【参考方案2】:你可以使用 Group by 来做到这一点
Select OrderID, sum(Total) as [Sub Total] from tblOrderDetail group by OrderID;
You can get more details here !
【讨论】:
以上是关于另一个表中的多行(与另一个表相关)记录的总和的主要内容,如果未能解决你的问题,请参考以下文章
如何通过将一个表中的 id 与另一个表匹配来选择和更新一个表中的记录?
SQL 表中如何让某条记录的某个属性值与另一个表中的某条记录的某个属性值相关联