Oracle使用count max condition创建表为select

ivy*_*ivy 8 oracle select count

我有一个Oracle问题,这是我的选择:

create table new_table as 
select
idprod as product_id, descr as description
from old_table p where updateNum = (select max(updateNum) from old_table pp where pp.idprod = p.idprod);
Run Code Online (Sandbox Code Playgroud)

这个查询给了我一个通用错误,没有解释.SQL Developer说我:

"在命令的第7行开始出错:[...]错误报告:
SQL命令:create table
Failed:警告:执行完成并显示警告"

但是创建表并且里面的数据似乎是正确的.

一些提示?

use*_*616 7

无论何时在具有NULL的列上使用函数,Oracle都会在CREATE TABLE语句中发出"失败:警告:执行完成且出现警告".当您使用CASE WHEN或DECODE并且不使用默认值来处理NULL(例如,ELSE 0)时,通常会发生这种情况.这也是https://forums.oracle.com/forums/thread.jspa?threadID=723332上所述相同问题的解决方案.

为避免出现问题:请确保在CREATE TABLE AS中的NULL列上不使用函数(例如,max,sum).


Dan*_*nga 6

旧版本的SQL Developer有一个错误,它会在以下情况发出类似警告CREATE TABLE:请参阅此OTN论坛帖子.

由于表是使用正确的数据创建和填充的,因此该CREATE TABLE语句是正确的.如果您想确定,请尝试执行SQL*Plus中的语句.