Sql server 加窗求和查询,给出一个;因为它不包含在任何一个聚合中;错误
我有以下疑问:Sql server 加窗求和查询,给出一个;因为它不包含在任何一个聚合中;错误,sql-server,aggregate-functions,Sql Server,Aggregate Functions,我有以下疑问: select d.ShortDate, b.BranchCode, sum(home_net_change_calc) as Period_HomeNet_Denom, sum(oper_net_change_calc) as Period_OperNet_Denom, sum(budget_home
select d.ShortDate,
b.BranchCode,
sum(home_net_change_calc) as Period_HomeNet_Denom,
sum(oper_net_change_calc) as Period_OperNet_Denom,
sum(budget_home_net_change_calc) as Period_BudgetHomeNet_Denom,
sum(budget_oper_net_change_calc) as Period_BudgetOperNet_Denom,
sum(oper_net_change_calc) over (partition by b.BranchCode order by d.ShortDate rows between unbounded preceding and current row ) as Range_HomeNet_Denom
from FinanceFacts as fact
join DimBranch b on fact.BranchKey = b.BranchKey
join DimDate d on d.DateKey = fact.DateKey
where d.ShortDate between '2016-09-01' and '2017-09-30'
and b.BranchCode = '113'
group by d.ShortDate,
b.BranchCode
带窗口sum函数的行导致错误:“FinanceFacts.oper\u net\u change\u calc”列在选择列表中无效,因为它不包含在聚合函数或GROUP BY子句中
这对我来说没有任何意义-我试图对该字段求和,而不是按它分组
如果不清楚的话,查询的目标是对每个ShortDate值的度量值求和,然后还得到所有日期的总值
我正在使用SQL Server 2014我在这里找到了答案: 如果我将进攻线从:
sum(oper_net_change_calc) over (partition by b.BranchCode order by d.ShortDate rows between unbounded preceding and current row ) as Range_HomeNet_Denom
致:
有人能解释一下它是如何工作的吗?我在这里找到了答案: 如果我将进攻线从:
sum(oper_net_change_calc) over (partition by b.BranchCode order by d.ShortDate rows between unbounded preceding and current row ) as Range_HomeNet_Denom
致:
有人能解释一下它是如何工作的吗?窗口函数应用于基本查询的结果集-当
选择ing时,但在所有其他子句之后,如WHERE
,按分组和按排序。
因此,当您在带分组的查询中使用OVER
子句时,您可以使用该命令指示SQL server对其自己的行集进行操作,但对整个查询的数据集进行操作
因此,当您使用SUM(oper\u net\u change\u calc)OVER(PARTITION by b.BranchCode)
时,SQL Server将SUM()
解释为groupby
子句的一部分,而不是OVER()
子句的一部分,因此您缺少一个应用该OVER()
子句的函数
关于窗口函数的工作原理,可以在这里找到很好的解释:窗口函数应用于基本查询的结果集-当选择
ing时,但在所有其他子句之后,如WHERE
、groupby
和ORDER BY
。
因此,当您在带分组的查询中使用OVER
子句时,您可以使用该命令指示SQL server对其自己的行集进行操作,但对整个查询的数据集进行操作
因此,当您使用SUM(oper\u net\u change\u calc)OVER(PARTITION by b.BranchCode)
时,SQL Server将SUM()
解释为groupby
子句的一部分,而不是OVER()
子句的一部分,因此您缺少一个应用该OVER()
子句的函数
有关窗口函数如何工作的详细说明,请参见此处:谢谢-这非常有帮助。连第一句话都让灯泡亮了!谢谢,这帮了大忙。连第一句话都让灯泡亮了!我真的很想解释一下。这对我也很有用。我真的很想解释一下。这对我也有用。