输入banner图图片脚本导航/分类

oracle 窗口函数over

select 字段2,字段3  max(字段6) over (partition by  字段2,字段3 )from table  group by  字段2,字段3,字段5;

会报错的,因为max中的字段6没有在group 中。

可以使用子语句嵌套一下 让最顶层的select 不要出现group BY (SELECT * MAX() OVER() (SELECT .. FROM TABLE GROUP BY ..)  )

正确写法是

 

select t.*  max(字段6) over (partition by  字段2,字段3 )

 from

(select 字段2,字段3,字段5,字段6 from table  group by  字段2,字段3,字段5,字段6)t;

这样每个字段2,字段3相同的值后面多一个相同的值

想要的结果应该是

select 字段2,字段3,字段5,maxp  from (

select t.*  max(字段6) over (partition by  字段2,字段3 ) maxp from (select 字段2,字段3,字段5,字段6 from table  group by  字段2,字段3,字段5,字段6)t

)tt

group by 字段2,字段3,字段5,maxp 

可以使用子语句嵌套一下

 

oracle 窗口函数over

标签: