我正在进行累积查询,它显示了我的数据库中客户端的演变。为了获得这些查询,我使用他们加入客户端数据库的年份和一周。
我有以下查询来搜索相关数据:
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
我该如何解决这个问题?
答案 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 ...