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

내가 왜 쿼리를 작성하는 대신 인테리어 선택 statementtent에서 본질적으로 동일한 LEFT JOIN을 LEFT JOIN으로 선택하는지에 대해 뭔가를 놓치고 있어야합니다. 단순화의 일부입니다. 그리고 단지 같은 쿼리에서 테이블 별칭을 다시 사용하지 않는 것이 좋습니다. – Matt

답변

2

b."MANDT" "b_MANDT"b."MANDT" b_MANDT을 변경해보십시오. 어떤 DB를 사용하고 있는지 잘 모르지만 일반적으로 따옴표가 붙지 않는 한 별칭의 기본값은 대문자이지만 대소 문자를 혼합하여 사용하려고합니다.