2015-05-14 3 views
1

Я запускаю SQL-запрос и пытаюсь разбить результаты на куски.Как использовать ROW_NUMBER в DB2 10 на z/OS?

select task_id, owner_cnum 
    from (select row_number() over(order by owner_cnum, task_id) 
     as this_row, wdpt.vtasks.* 
      from wdpt.vtasks) 
       where this_row between 1 and 5; 

что SQL работает с DB2 10.5 на Windows, и Linux, но не работает на DB2 10.1 на г/OS с помощью следующих сообщений об ошибке:

При запуске SQL из IBM DataStudio 4.1.1 работает на моя машина Windows, подключенная к базе данных, я получаю:

ILLEGAL SYMBOL "<EMPTY>". SOME SYMBOLS THAT MIGHT BE LEGAL ARE: CORRELATION NAME. SQLCODE=-104, SQLSTATE=42601, DRIVER=4.18.60 

Когда я запускаю свою программу на Java в системе zLinux соединения с базой данных, я получаю следующее сообщение об ошибке:

DB2 SQL Error: SQLCODE=-104, SQLSTATE=42601, SQLERRMC=<EMPTY>;CORRELATION NAME, DRIVER=3.65.97 

Любые идеи, что я делаю неправильно?

ответ

3

В некоторых версиях DB2 необходимо использовать имя корреляции для подвыборки, как это было предложено в сообщении об ошибке:

select FOO from (
    select FOO from BAR 
) as T 

Здесь «T» это имя корреляции.

+0

Спасибо, что сделал трюк! – Westy