简体   繁体   English

相关表的SQL总和

[英]Sql Sum OF related Tables

This Is SQL Statment: 这是SQL语句:

SELECT
  dbo.tblWorkflow.WorkflowName,
  ISNULL((SELECT SUM(dbo.tblSchemaOperation_Execution.ExecutedQuantity * dbo.tblOperationItemPrice.UnitPrice) AS Amount
          FROM dbo.tblSchemaOperation_Execution 
          INNER JOIN dbo.tblOperationItemPrice ON dbo.tblSchemaOperation_Execution.OperationID = dbo.tblOperationItemPrice.OperationID
          GROUP BY dbo.tblSchemaOperation_Execution.SchemaYear, 
                   dbo.tblSchemaOperation_Execution.SchemaNO
          HAVING (dbo.tblSchemaOperation_Execution.SchemaNO = dbo.tblWorkflowActivtyInsatnce.SchemaNO) AND 
                (dbo.tblSchemaOperation_Execution.SchemaYear = dbo.tblWorkflowActivtyInsatnce.SchemaYear)), 0) AS ActualAmount

FROM dbo.tblWorkflowActivtyInsatnce 
INNER JOIN dbo.tblWorkflow ON dbo.tblWorkflowActivtyInsatnce.WorkflowID = dbo.tblWorkflow.WorkflowID 
INNER JOIN dbo.tblWorkflowActivity ON dbo.tblWorkflowActivtyInsatnce.WorkflowActivityID = dbo.tblWorkflowActivity.WorkflowActivityID

WHERE (dbo.tblWorkflowActivtyInsatnce.StartDate IS NOT NULL) 
  AND (dbo.tblWorkflowActivtyInsatnce.FinishDate IS NULL) 
  AND (dbo.tblWorkflowActivity.ActivityName <> 'Execution')

and the output is: 输出为:

WorkFlowName  :   ActualAmount
------------  :    ------------
Sceco         :      28020.00
Sevareg       :       5005.00
Sevareg       :       1100.00

How can I use sum to get total of Sevareg? 如何使用总和获得塞瓦雷格的总和? like this 像这样

WorkFlowName  :   ActualAmount
------------  :    ------------
Sceco         :      28020.00
Sevareg       :       6105.00

Is this what you want, using GROUP BY and SUM ? 使用GROUP BYSUM就是您想要的吗?

SELECT WorkflowName, SUM(ActualAmount)
FROM (SELECT dbo.tblWorkflow.WorkflowName,
             ISNULL ((SELECT SUM(dbo.tblSchemaOperation_Execution.ExecutedQuantity * dbo.tblOperationItemPrice.UnitPrice) AS Amount 
                      FROM dbo.tblSchemaOperation_Execution 
                      INNER JOIN dbo.tblOperationItemPrice
                              ON dbo.tblOperationItemPrice.OperationID = dbo.tblSchemaOperation_Execution.OperationID
                      GROUP BY dbo.tblSchemaOperation_Execution.SchemaYear,
                               dbo.tblSchemaOperation_Execution.SchemaNO 
                      HAVING (dbo.tblSchemaOperation_Execution.SchemaNO = dbo.tblWorkflowActivtyInsatnce.SchemaNO) 
                         AND (dbo.tblSchemaOperation_Execution.SchemaYear = dbo.tblWorkflowActivtyInsatnce.SchemaYear)), 
                     0) AS ActualAmount

      FROM dbo.tblWorkflowActivtyInsatnce 
      INNER JOIN dbo.tblWorkflow 
              ON dbo.tblWorkflow.WorkflowID = dbo.tblWorkflowActivtyInsatnce.WorkflowID
      INNER JOIN dbo.tblWorkflowActivity
              ON dbo.tblWorkflowActivity.WorkflowActivityID = dbo.tblWorkflowActivtyInsatnce.WorkflowActivityID
      WHERE (dbo.tblWorkflowActivtyInsatnce.StartDate IS NOT NULL) 
        AND (dbo.tblWorkflowActivtyInsatnce.FinishDate IS NULL) 
        AND (dbo.tblWorkflowActivity.ActivityName <> 'Execution')
     ) AS x
GROUP BY dbo.tblWorkflow.WorkflowName

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM