在累积查询中不是按功能分组

时间:2015-10-07 12:53:06

标签: sql oracle

我正在进行累积查询,它显示了我的数据库中客户端的演变。为了获得这些查询,我使用他们加入客户端数据库的年份和一周。

我有以下查询来搜索相关数据:

SELECT DD.CAL_YEAR, DD.WEEK_OF_YEAR, SUM(COUNT(DISTINCT FAB.ID)) OVER ( ORDER BY DD.CAL_DATE ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW ) AS "Number of account statements"
FROM CLIENT_DATABASE FAB
JOIN DIM_DATE DD ON FAB.BALANCE_DATE_ID = DD.ID
GROUP BY DD.CAL_YEAR, DD.WEEK_OF_YEAR;

但是当我编译此查询时,我收到以下错误:

  

错误:ORA-00979:不是GROUP BY表达式

     

SQLState:42000 ErrorCode:979

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

由于您按DD.CAL_YEAR, DD.WEEK_OF_YEAR进行分组,因此无法在累积和函数的DD.CAL_DATE子句中使用order by

如果不完全了解您的数据,我很难准确地说出您要做的事情。但是,从逻辑上讲,您似乎应该只能在DD.CAL_YEAR, DD.WEEK_OF_YEAR子句中使用order by而不是DD.CAL_DATE,并且仍能按照您期望的方式获得结果。

这样的事情:

SUM(COUNT(DISTINCT FAB.ID)) OVER ( ORDER BY D.CAL_YEAR, DD.WEEK_OF_YEAR ...
相关问题