[英]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 BY
和SUM
就是您想要的嗎?
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.