MSSQL:获取总计的小计
如何编写查询以获取总计的小计?下面是一个例子MSSQL:获取总计的小计,sql,sql-server,tsql,sql-server-2012,sql-server-2008-r2,Sql,Sql Server,Tsql,Sql Server 2012,Sql Server 2008 R2,如何编写查询以获取总计的小计?下面是一个例子 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 | Tot
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
它可以将其包装在子查询中:
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
不能在同一选择中重复使用列别名。相反,只需重复以下操作:
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。< /P>你需要第二个查询中的和。它仍然是一个聚合,只是所有列的总和。