Следующий запрос работает в Oracle 10.2.0.1.0 в Windows, но не работает в Oracle 10.2.0.2.0 в Linux.
Сообщение об ошибке:
Ошибка SQL: ORA-00904: «T». «AUDIT_USECS»: неверный идентификатор
00904. 00000 - «% s: неверный идентификатор»
Работает после удаления подзапроса. Я обнаружил, что если использовать поля T в подзапросе, то возникает ошибка. Это говорит о том, что подзапрос не может получить доступ к полям основного запроса?
В чем проблема? Как я могу заставить его работать на Oracle на Linux?
Спасибо!
CREATE TABLE AUDITHISTORY(
CASENUM numeric(20, 0) NOT NULL,
AUDIT_DATE date NOT NULL,
USER_NAME varchar(255) NULL,
AUDIT_USECS numeric(6, 0) NOT NULL,
TYPE_ID INT NOT NULL )
Запрос:
SELECT T.CASENUM,
T.USER_NAME,
T.AUDIT_DATE AS STARTED,
(SELECT *
FROM (SELECT S.AUDIT_DATE
FROM AUDITHISTORY S
WHERE S.CASENUM=T.CASENUM AND TYPE_ID=2
AND S.USER_NAME=T.USER_NAME
AND (S.AUDIT_DATE > T.AUDIT_DATE OR (S.AUDIT_DATE = T.AUDIT_DATE AND S.AUDIT_USECS > T.AUDIT_USECS))
ORDER BY S.AUDIT_DATE ASC,S.AUDIT_USECS ASC
) WHERE rownum <= 1) AS ENDED
FROM AUDITHISTORY T WHERE TYPE_ID=1
ЗНАМЯ
Oracle Database 10g Enterprise Edition Выпуск 10.2.0.1.0 - Prod
PL / SQL Release 10.2.0.1.0 - Производство
CORE 10.2.0.1.0 Производство
TNS для 32-битных Windows: версия 10.2.0.1.0 - производство
NLSRTL Версия 10.2.0.1.0 - Производство
ЗНАМЯ
Oracle Database 10g Enterprise Edition Выпуск 10.2.0.2.0 - Prod
PL / SQL Release 10.2.0.2.0 - Производство
CORE 10.2.0.2.0 Производство
TNS для Linux: версия 10.2.0.2.0 - производство
NLSRTL Версия 10.2.0.2.0 - Производство