Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.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
Oracle SQL格式化_Oracle - Fatal编程技术网

Oracle SQL格式化

Oracle SQL格式化,oracle,Oracle,我有一个查询来获取账单数据,按日历年和一年中的星期分组。我想了解一下账单的总体演变。因此,不仅是1周的账单数量,而且从开始到本周。我有以下疑问 SELECT DD.CAL_YEAR, DD.WEEK_OF_YEAR AS "Date by week", SUM(DISTINCT FAB.ID) OVER ( ORDER BY DD.CAL_YEAR, DD.WEEK_OF_YEAR ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW ) AS "Nu

我有一个查询来获取账单数据,按日历年和一年中的星期分组。我想了解一下账单的总体演变。因此,不仅是1周的账单数量,而且从开始到本周。我有以下疑问

SELECT DD.CAL_YEAR, DD.WEEK_OF_YEAR AS "Date by week", SUM(DISTINCT FAB.ID) OVER ( ORDER BY DD.CAL_YEAR, DD.WEEK_OF_YEAR ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW ) AS "Number of bills"
    FROM BILLS_TABLE FAB
    JOIN DIM_DATE DD ON FAB.BALANCE_DATE_ID = DD.ID
    GROUP BY  DD.CAL_YEAR,DD.WEEK_OF_YEAR;
但当我执行此查询时,会出现以下异常:

错误:ORA-30487:此处不允许按订单

SQLState:99999错误代码:30487


OVER函数需要order by子句,那么有什么问题吗?

问题实际上是
distinct
sum
中的使用

因为您有order by子句,这意味着您在做一个累积和。在这种情况下执行
不同的
,实际上没有任何意义。这就是错误实际上想要告诉你的

项目的文件中提到了这一点:

如果指定
DISTINCT
,则只能指定
分析子句的
查询分区子句
。不允许使用
order\u by\u子句
windowing\u子句


好的,当我删除distinct时,我得到了另一个错误:ORA-00979:不是GROUP BY表达式分析函数的工作方式与普通聚合函数的工作方式不同。分析函数只能引用
group by
子句中的列。