неверный идентификатор с подзапросом - PullRequest
0 голосов
/ 20 апреля 2019

я хочу получить доступ к столбцу st.Gr_number в подзапросе но это дает мне ошибку

ORA-00904: "ST". "GR_NUMBER": неверный идентификатор

    Select st.Gr_number,
st.STUDENT_ID, st.course, 
st.Student_Name,cr.course_name,
st.Status as Active,
st.GR_NUMBER as Fee_Detail,
(Select sum(nvl(r.amt, 0)-nvl(f.fee_amount, 0)) as Current_Balance
from FEE_SCHEDULE f 
full outer join (select gr_number, to_char(pmt_date,'yyyymm') pmt_month, sum(nvl(pmt_amount,0)) amt 
                 from FEE_PAYMENT_POSTED
                 Where pmt_type = 'FEE'
                 and   gr_number = st.Gr_number
                 group by gr_number, to_char(pmt_date,'yyyymm')
                ) r 
             on f.GR_NUMBER=r.GR_NUMBER and f.SCHEDULE_MONTH=r.pmt_month

where nvl(f.gr_number,r.gr_number) = st.Gr_number
) currentBalance

from student st inner join course cr on cr.course_id=st.course
where st.student_id=:P166_STUDENT_ID and upper(st.Status)='STUDYING';

Ответы [ 2 ]

0 голосов
/ 20 апреля 2019

Эта строка вызывает ошибку:

            and   gr_number = st.Gr_number

Хотя это довольно сложно отличить от вашего форматирования, оно вложено в два уровня:

select . . . ,
       (select . . .
        from . . . 
             (select . . .
              from . . . gr . . .
              where . . . and
                    gr_number = st.Gr_number
             ) level3
       ) level2
from . . . st . . .

Правила области видимости Oracle позволяют распознавать ссылки на таблицы только на один уровень. Таким образом, в пределах level3 вы можете ссылаться на level2, но не на внешний уровень.

У вас очень сложный запрос. Нет никакого способа узнать, является ли это единственной проблемой, поэтому я даже не буду пытаться ее исправить.

Я бы предложил вам задать другой вопрос с упрощенным запросом.

0 голосов
/ 20 апреля 2019

Во внутреннем запросе вы пытаетесь использовать st.GR_NUMBER, пока он еще не определен, как во внешнем запросе.

Это место gr_number = st.Gr_number, где проблема.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...