2016-08-24 2 views
-2

У меня есть вложенный оператор SQL. Во внутренней инструкции SQL я переименовываю столбец следующим образом: b."MANDT" b_MANDT. Во внешнем заявлении я попробую нечто подобное: a."b_MANDT" a_b_MANDT.Неверная колонка после переименования

Но я получаю сообщение об ошибке, что это недопустимое имя столбца, почему?

SAP DBTech JDBC: [260]: invalid column name: A.b_MANDT: line 1 col 43 (at pos 42)

Оригинал SQL заявление:

SELECT a."MANDT", a."VBELN", a."POSNR", a."b_MANDT" a_b_MANDT, a."b_VBELN" a_b_VBELN, a."VPOSN" a_VPOSN, b."MANDT" b_MANDT, b."VBELN" b_VBELN, b."VPOSN" 
FROM (
    SELECT a."MANDT", a."VBELN", a."POSNR", b."MANDT" b_MANDT, b."VBELN" b_VBELN, b."VPOSN" 
    FROM "SAP_ECC".VBAP a 
    LEFT JOIN "SAP_ECC".VEDA b ON a.MANDT = b.MANDT AND a.VBELN = b.VBELN AND a.POSNR = b.VPOSN 
) a 
LEFT JOIN "SAP_ECC".VEDA b ON a.MANDT = b.MANDT AND a.VBELN = b.VBELN AND a.VPOSN = b.VPOSN 
+0

Было бы здорово, если вы воспроизведете свою ошибку на гораздо более простой структуре и запросе, которые более читабельны, чем ваш текущий запрос. Я имею в виду, когда сообщение об ошибке указывает на ошибку, которая находится в столбце 2635 !!, то это немного. – sstan

+0

@sstan, спасибо за отзыв, я удалил ненужные столбцы :) – ScientiaEtVeritas

+0

Мне должно быть что-то не хватает, почему вы выбираете LEFT JOIN, по существу, тот же самый LEFT JOIN на внутренней части select statemtent вместо того, чтобы просто писать запрос, но, возможно, это является частью упрощения. И просто и предложение не используют повторные псевдонимы таблиц в том же запросе. – Matt

ответ

2

Попробуйте изменить b."MANDT" b_MANDT к b."MANDT" "b_MANDT". Не знаете, какую БД вы используете, но обычно, если не указано, псевдоним по умолчанию соответствует верхнему регистру, но вы пытаетесь ссылаться на него как на смешанный.

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