暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle 分区时,最大聚合函数显示不同的结果

ASKTOM 2019-03-27
204

问题描述

大家好,我从查询中得到奇怪的结果。

我有一个按id分区的表列表,当我执行这个:

select max(col1) from table where id=100;


它返回值 “A1”。然后我执行以下操作 (请记住,partName是id = 100的分区名称):

select max(col1) from table (partName);


它返回 “B1”

分区partName中的正确值是B1,如果I
select id from table where col1='A1'
它返回正确的值 (500)。

您是否知道使用分区表的MAX函数上的任何错误可能导致这种情况?

谢谢!

专家解答

我无法重现此内容或找到任何明显相关的错误:

create table t (
  c1 int, 
  c2 int
) partition by list ( c1 ) (
  partition p1 values ( 1 ), 
  partition p2 values ( 2 ),
  partition p3 values ( 3 ), 
  partition p4 values ( 4 )
);

insert into t 
with rws as (
  select mod ( level, 4 ) + 1, level x 
  from   dual
  connect by level <= 10
)
  select * from rws;
  
select max ( c2 ) from t
where  c1 = 1;

MAX(C2)   
        8 

select max ( c2 ) 
from   t partition ( p1 );

MAX(C2)   
        8 


如果您希望我们进一步研究,我们需要一个完整的测试用例:

-创建表格
-插入
-选择
文章转载自ASKTOM,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论