簡體   English   中英

相關表的SQL總和

[英]Sql Sum OF related Tables

這是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')

輸出為:

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

如何使用總和獲得塞瓦雷格的總和? 像這樣

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

使用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