![](/img/trans.png)
[英]SQL case statement - Select values from third based on 2 other tables
[英]How to calculate a total of values from other tables in a column of the select statement
我有三张桌子:
CustOrder : id, CreateDate, Status
DenominationOrder : id, DenID, OrderID
面额 : id, amount
我想基于所有这些表创建一个视图,但是应该有一个额外的列,即Total
应该可以计算每个订单金额的总和。
例如
可能吗?
我试着猜测你的表关系(以及数据,你没有提供任何样本):
SELECT co.id,
COUNT(do.DenID) AS `Total denominations`,
SUM(d.amount) AS `Total amount`
FROM CustOrder co
INNER JOIN DenominationOrder do ON co.id = do.OrderId
INNER JOIN Denomination d ON do.DenId = d.id
GROUP BY co.id
尝试这个:
SELECT o.CreateDate, COUNT(o.id), SUM(d.amount) AS 'Total Amount'
FROM CustOrder o
INNER JOIN DenominationOrder do ON o.id = do.OrderID
INNER JOIN Denomination d ON do.DenId = d.id
GROUP BY o.CreateDate
另一种方法是使用CTE ,如下所示:
;WITH CustomersTotalOrders
AS
(
SELECT o.id, SUM(d.amount) AS 'TotalAmount'
FROM CustOrder o
INNER JOIN DenominationOrder do ON o.id = do.OrderID
INNER JOIN Denomination d ON do.DenId = d.id
GROUP BY o.id
)
SELECT o.id, COUNT(ot.id) AS 'Orders Count', ot.TotalAmount
FROM CustOrder o
INNER JOIN CustomersTotalOrders ot on o.id = ot.id
INNER JOIN DenominationOrder do ON ot.id = do.OrderID
INNER JOIN Denomination d ON do.DenId = d.id
GROUP BY o.id, ot.TotalAmount
这会给你:
id | Orders Count | Total Amount
-------+---------------+-------------
1 3 750
2 2 500
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.