SQL Server,返回由单个列分组的求和数据集以进行合并查询

时间:2017-10-02 19:04:31

标签: sql sql-server azure-sql-database

我有一个如下数据集:

BaseID| SecondaryTypeID| Value    
------------------------------
1       5                1
1       5                3
1       5                8

我想得到的是:

BaseID| SecondaryTypeID| Value    
------------------------------
1       5                12

现在,我可以使用以下内容返回该数据集:

select BaseID, 
       SecondaryTypeID, 
       (select sum(Value) from TableA) as SummedValue
from TableA
group by BaseID, SecondaryTypeID

但是,作为合并查询的一部分,我无法做到这一点,内部选择会使合并中出现错误,如下所示:

  

由于提示,查询处理器无法生成查询计划   在此查询中定义。重新提交查询而不指定任何提示   并且不使用SET FORCEPLAN。

对于如何解决这个问题的任何想法都会感激不尽!

1 个答案:

答案 0 :(得分:3)

为什么要使用子查询?只是做:

select BaseID, SecondaryTypeID, sum(Value) as SummedValue
from TableA
group by BaseID, SecondaryTypeID;

如果结果集中有多行并想要总和,则使用窗口函数:

select BaseID, SecondaryTypeID,
       sum(sum(Value)) over () as SummedValue
from TableA
group by BaseID, SecondaryTypeID;

这是您的查询真正所要做的事情。我怀疑这是你想要的。