我需要从DB2中提取特定行。
select istore,row_num() over() from store where row_num()=2;
所以这里我需要从存储表中获取第二行,但上面的查询没有获取任何数据。请帮助我。先谢谢你
vojdkbi01#
您需要在外部查询中获取它,如
select * from ( select istore, ROW_NUMBER() OVER (PARTITION BY some_column ORDER BY some_column) AS rn from store ) tab where rn = 2;
ghg1uchk2#
你没有具体说明你的问题是什么,但你的陈述中有两个错误:1.窗口函数命名为row_number(),而不是row_num()1.不能在where子句中使用窗口函数。使用row_number()而不使用任何order by是没有意义的,因为您最终得到的是随机排序。
row_number()
row_num()
order by
select * from ( select istore, row_number() over (order by something) as rn from store ) t where rn = 2;
用定义行顺序的列名替换something。没有任何顺序就没有“第二行”这样的东西。
something
3b6akqbq3#
下面是不使用ROW_NUMBER()函数的另一种方法。(只有在按值唯一的列进行排序时,这种方法才有效)
select * from ( select * from store order by something asc fetch first 2 rows only ) order by something desc fetch first 1 rows only;
3条答案
按热度按时间vojdkbi01#
您需要在外部查询中获取它,如
ghg1uchk2#
你没有具体说明你的问题是什么,但你的陈述中有两个错误:
1.窗口函数命名为
row_number()
,而不是row_num()
1.不能在where子句中使用窗口函数。
使用
row_number()
而不使用任何order by
是没有意义的,因为您最终得到的是随机排序。用定义行顺序的列名替换
something
。没有任何顺序就没有“第二行”这样的东西。3b6akqbq3#
下面是不使用ROW_NUMBER()函数的另一种方法。(只有在按值唯一的列进行排序时,这种方法才有效)