我有一个包含以下字段的表
SalesOrderID RelatedOrderID Amount
1 0 5.00
2 1 1.00
3 0 3.00
4 0 20.00
5 4 10.00
我正在寻找一个查询,该查询将返回由原始总数和RelatedOrderID总数组成的销售订单总额。
SalesOrderID NewAmount
1 6.00
4 30.00
希望有意义......请提出任何问题。我知道这是一个令人困惑的情况!
谢谢,
麦克
答案 0 :(得分:0)
您可以使用union all
然后聚合::
select SalesOrderID, sum(amount) as amount
from ((select SalesOrderID, amount from t) union all
(select RelatedSalesOrderID, amount from t where RelatedSalesOrderID > 0)
) tt
group by SalesOrderID;
答案 1 :(得分:0)
为此,你必须使用类似的东西
SELECT
least(o.SalesOrderId,r.SalesOrderId) AS SalesOrderId,
o.Amount + r.Amount AS Amount
FROM
orders o
JOIN orders r ON o.SalesOrderId = r.RelatedOrderID;
答案 2 :(得分:-2)
谢谢两位,自从发布以来我实际上已经解决了这个问题:
SELECT so1.SalesOrderID,
cast(SUM(so1.Amount+so2.Amount) as money) as NewAmount
FROM SalesOrder so1
JOIN SalesOrder so2
ON so1.SalesOrderID = so2.RelatedOrderID
GROUP BY so1.sorder_code