2014-02-14 3 views
0

Я бегу этот запрос в Oracle 11g без проблем:Query работает на Oracle 11g, но не на Oracle 8i

select (case 
     when seqnum = 1 then 
      '1' 
     when seqnum = cnt then 
      '0' 
     end) as value1, 
     (case 
     when seqnum = 1 then 
      t.BEGIN_DT 
     when seqnum = cnt then 
      t.END_DT 
     end) as TIME1,  
     t4.UNIT1 || '.SUBBATCH_TRIGGER' TAG  
    from (select t.*, 
       row_number() over(partition by t.BATCH_ID, t.plant_unit, t3.ID2 order by t.BEGIN_DT) as seqnum, 
       count(*) over(partition by t.BATCH_ID, t.plant_unit, t3.ID2) as cnt 
      from SCH2.tb_pg_unit_stap t 
join (select ID1,batch_id from SCH2.VW_BATCH) t2 on t.BATCH_ID = t2.BATCH_ID 
join (select ID2,ID1 from SCH1.STEP) t3 on t3.ID1 = t2.ID1) t 
join SCH2.TB_W_MACHINE t4 on t4.plant_unit = t.plant_unit 
where (seqnum = 1 
    or seqnum = cnt) AND (t.BEGIN_DT > '01-jan-2013' AND t.BEGIN_DT < '01-feb-2013'); 

Но когда я запускаю его в Oracle 8i (8.7.1) это дает ORA-00933 ВЭ : Команда SQL не была закончена.

Есть ли какое-либо особое соображение, которое я должен знать для выполнения SQL-команд в Oracle 8i?

Заранее спасибо

+2

8i версия Oracle не поддерживает синтаксис соединения ANSI (введен в 9iR2). Вы перепишете свой запрос, используя запятую (',') join notation (cross join) и поместите свои условия соединения в предложение 'where' запроса. –

+1

oracle 8i: конец расширенной поддержки 31-DEC-2006 (... shiver ...) –

+0

Я знаю, что это очень старая версия, но я только разрабатываю некоторые .NET-материалы, и мне нужно запустить этот запрос там. .. Это клиентский DB –

ответ

1

команды Афака случая было введено так 9i.

+0

Спасибо за комментарии! Может кто-нибудь помочь мне переписать его в Oracle 8i? Я смущен. –

+0

Я действительно уверен, что проблема в row_number() и count (*) завершена, и это кажется сложным переписать этот запрос без аналитических функций. – smnbbrv

+3

@simon: нет, это не так. Они были доступны в 8i - это ANSI 'JOIN', который не поддерживался в 8.x –

Смежные вопросы