打开ROW_NUMBER()的SQL等效项

时间:2014-05-09 08:20:50

标签: sap abap opensql

ABAP程序的ROW_NUMBER()函数是否等效?

此函数在SQL中使用如下:

SELECT ROW_NUMBER() OVER (ORDER BY SomeField) AS Row, *
FROM SomeTable

它应该将行号作为结果行中的第一列返回(我不确定它是结果集中的行号还是源表中的行号)。我发现此声明可以在SAP Business One中使用,但似乎无法找到Open SQL等价物。

是否有一个或者我将被迫手动循环生成的itab以分配索引?

2 个答案:

答案 0 :(得分:2)

如果这是用于存储记录的行,以便以后在ABAP程序中访问,则不需要存储它。当你循环时,它会被保留。太棒了。

LOOP AT itab INTO wa_itab.
write /:sy-tabix "This is the index of the record within the table
ENDLOOP.

如果要修改内容然后将它们存储回表中,请为您的值添加一列,并执行以下操作: DATA:my_string TYPE string。

LOOP AT itab INTO wa_itab.
my_string = sy-tabix.
CONCATENATE some_text my_string more_text into wa_itab-my_field.
MODIFY itab FROM wa_itab. "Here you can leave out INDEX sy-tabix because it is inside a loop and the current line will be used.
CLEAR my_string.
ENDLOOP.

答案 1 :(得分:1)

否,这在OpenSQL中是不可能的。 5年前是不可能的,而现在仍然是不可能的。

但是,可以在SAP HANA中使用CREATE SEQUENCE语句。