Oracle使用count max condition创建表为select

时间:2011-04-28 10:28:03

标签: 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);

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

  

“在命令的第7行开始出错:[...]错误报告:
  SQL命令:create table
  失败:警告:执行完成时出现警告“

但创建表格,里面的数据似乎是正确的。

一些提示?

2 个答案:

答案 0 :(得分: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)。

答案 1 :(得分:5)

旧版本的SQL Developer有一个错误,它会在CREATE TABLE之后发出类似的警告:请参阅this OTN Forums post

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