DB2之partition by

很不错的OLAP函数,partition by。但是使用时还是有很多需要注意的地方。

看上去有点像group by,但是select * from tab partition by code 的语法是错误的,

实际上,在DB2上,需要和over表达式,聚合函数一块使用,这一点和group by 有点类似。

例如:select ct.*,rownum() over(partition by branch_code) as seq from tab ct 是正确的。

注意语句的as,有了seq别名之后不能立即作为条件使用,如在上面的语句后接上 where seq<4是有错误的

应该将上述语句的结果集作为一个虚表,然后在进行条件的筛选,如:

select * from (.........) tdetail where tdetail.seq<4

查询的结果集也是比较特别的, 它是partition by 之后的每个明细组里序号小于4的,这里需要说明的

是虚表对应的结果集里,是按照partition by 字段进行分组并进行编号的,而且是组内编号。

猜你喜欢

转载自zengshaotao.iteye.com/blog/2234533
db2