2017-06-15 109 views
1

如何編寫查詢以獲取總計小計?示例如下。MSSQL:獲取總計小計

select 
task_id, 
client_id, 
SUM(value1 + value2) AS 'Total 1', 
SUM(value3 + value4) AS 'Total 2', 
--pseudocode 
SUM(Total 1 + Total 2) AS 'Total 1 + Total 2' 
from table1 
GROUP BY task_id,client_id 

預期結果:

task_id | client_id | Total 1 | Total 2 | Total 1 + Total 2 | 
    1   4   2   4   6 

回答

1

它可以把它包在一個子查詢:

SELECT 
    task_id 
    , client_id 
    , [Total 1] 
    , [Total 2] 
    , SUM([Total 1], [Total 2]) AS 'Total 1 + Total 2' 
FROM 
(
    select 
    task_id, 
    client_id, 
    SUM(value1 + value2) AS 'Total 1', 
    SUM(value3 + value4) AS 'Total 2', 
    --pseudocode 
    SUM(Total 1 + Total 2) AS 'Total 1 + Total 2' 
    from table1 
    GROUP BY task_id,client_id 
) a 
GROUP BY task_id, client_id 

或者,而不是使用SUM,你可以簡單地添加原始值:

select 
task_id, 
client_id, 
SUM(value1 + value2) AS 'Total 1', 
SUM(value3 + value4) AS 'Total 2', 
--pseudocode 
value1 + value2 + value3 + value4 AS 'Total 1 + Total 2' 
from table1 
GROUP BY task_id,client_id 
+1

您需要第二個查詢中的SUM。它仍然是一個聚合,只是所有列的總和。 –

1

您不能在同一選擇中重新使用列別名。相反,重複剛纔的操作:

select task_id, client_id, 
     SUM(value1 + value2) AS [Total 1], 
     SUM(value3 + value4) AS [Total 2], 
     SUM(value1 + value2 + value3 + value4) AS [Total 1 + Total 2] 
from table1 
group by task_id, client_id; 

如果重複操作很麻煩,那麼你可以考慮一個子查詢或CTE。