Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MSSQL:获取总计的小计_Sql_Sql Server_Tsql_Sql Server 2012_Sql Server 2008 R2 - Fatal编程技术网

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>你需要第二个查询中的和。它仍然是一个聚合,只是所有列的总和。