Sql 如何计算select语句列中其他表的值的总和

Sql 如何计算select语句列中其他表的值的总和,sql,database,Sql,Database,我有三张桌子: customorder:id、CreateDate、Status 命名订单:id,DenID,OrderID 面额:id,金额 我想基于所有这些表创建一个视图,但应该有一个附加列,即可以计算每个订单金额总和的Total e、 g 订单1总面额3,总金额=250+250+250=750 订单2总面额2,总金额=250+250=500 有可能吗?我尝试猜测您的表关系(还有数据,您没有提供任何示例): 试试这个: SELECT o.CreateDate, COUNT(o.id)

我有三张桌子:

  • customorder
    id、CreateDate、Status

  • 命名订单
    id,DenID,OrderID

  • 面额
    id,金额

我想基于所有这些表创建一个视图,但应该有一个附加列,即可以计算每个订单金额总和的
Total

e、 g

  • 订单1总面额3,总金额=250+250+250=750
  • 订单2总面额2,总金额=250+250=500

有可能吗?

我尝试猜测您的表关系(还有数据,您没有提供任何示例):

试试这个:

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

您尝试过(或正在使用)的SELECT语句是什么?我尝试过这个语句,但它给出了所有语句的总和,而不是逐行计算:-选择sum(d.amount)作为CustOrder o、den、d中的TotalAmount,其中o.\U id=den.ORDEID和d.\U id=den。DenID@Fundi:编辑问题发布示例数据,我们无法处理我们认为你拥有的东西…@Fundi:你发表评论的问题是什么?这是错误的!!你必须使用我的查询,而不是你的!!!您(在查询结束时)使用
和o._id=2
,因此您只获得订单=2!!!更多:请不要使用
WHERE
条件替换
加入
@芬迪:不,这是不对的,你没有使用
groupby
。。。。请使用我的查询而不更改它,您将看到它是正确的:)是的,很抱歉无法提前答复。它给了我想要的结果。你能再告诉我一件事吗。如果要将此查询的值分配给select语句的列,该怎么办。e、 g.选择(您的查询)作为总计,其他列。。。。。。。
  id   |  Orders Count | Total Amount
-------+---------------+-------------
  1            3             750
  2            2             500