2014-03-18 1 views
-1

안녕하세요, 저는이 SQL을 실행하려고하고 있습니다. 그러나 SQL에 익숙하지 않아서 오류가 발생하고 있는지 확실하지 않습니다. 그것을 바로하고 있습니다.이 SQL을 실행하려고하지만 내가 올바르게하고 있는지 잘 모르겠다.

SELECT DISTINCT 
V1.TREE_NAME AS "MSTR_ACCOUNT_ALL", 
V1.TREE_NODE AS "REAL_ESTATE_EXP", 
V1.REPORT_TYPE AS "C", 
V1.ACCOUNT FROM PS_ACCT V1 
INNER JOIN PS_TRAN F1 ON F1.ACCOUNT = V1.ACCOUNT 
INNER JOIN PS_ACCT V2 ON V2.REPORT_TYPE = F1.REPORT_TYPE 
where F1.ACCOUNT = V1.ACCOUNT 

나는이 오류를

DB2 데이터베이스 오류 받고 있어요 : 그것은 어디 ERROR [42703]는 [IBM]는 [DB2는/AIX64 SQL0206N "V1.PS_ACCT.ACCOUNT는"맥락에서 유효하지 않습니다 익숙한. SQLSTATE = 42703

+3

미래에 "오류가 발생했습니다"와 같은 정확한 오류 메시지와 코드를 포함 할 수 있습니다. – mustaccio

+0

그리고 오류는 ...? – OldProgrammer

답변

1

조회에 몇 가지 문제점이 있습니다.

첫째, 당신은 단지 테이블 별칭이 아닌 전체 테이블 이름, 예를 참조해야합니다 둘째

SELECT DISTINCT V1.TREE_NAME = 'MSTR_ACCOUNT_ALL', 
    V1.TREE_NODE = 'REAL_ESTATE_EXP', 
    V1.REPORT_TYPE = 'C' 
    V1.ACCOUNT 
    FROM PS_ACCT V1 
    INNER JOIN PS_TRAN F1 ON F1.ACCOUNT = V1.ACCOUNT 
    INNER JOIN PS_ACCT V2 ON V2.REPORT_TYPE = F1.REPORT_TYPE 
    where F1.ACCOUNT = V1.ACCOUNT 

, 당신의 "여기서"절은 단순히 F1과 V1 사이의 결합 조건을 다시 말한다, 당신 때문에 (이 그래도 오류가 발생하지 것)을 생략 안전하게 할 수

SELECT DISTINCT V1.TREE_NAME = 'MSTR_ACCOUNT_ALL', 
    V1.TREE_NODE = 'REAL_ESTATE_EXP', 
    V1.REPORT_TYPE = 'C' 
    V1.ACCOUNT 
    FROM PS_ACCT V1 
    INNER JOIN PS_TRAN F1 ON F1.ACCOUNT = V1.ACCOUNT 
    INNER JOIN PS_ACCT V2 ON V2.REPORT_TYPE = F1.REPORT_TYPE 

마지막으로, SELECT 절은 단지 당신이보고 싶다면 열을 나열 할 필요가 - =는 유효한 구문은 여기되지 않습니다 :

SELECT DISTINCT 
    V1.TREE_NAME, 
    V1.TREE_NODE, 
    V1.REPORT_TYPE, 
    V1.ACCOUNT 
FROM PS_ACCT V1 
INNER JOIN PS_TRAN F1 ON F1.ACCOUNT = V1.ACCOUNT 
INNER JOIN PS_ACCT V2 ON V2.REPORT_TYPE = F1.REPORT_TYPE 

PS_ACCT 테이블/뷰에 REPORT_TYPE이라는 열이 있는지 여부는 매우 제한된 정보에서 분명하지 않습니다. 그렇지 않은 경우 여기에서 V1 별칭을 참조 했으므로 쿼리가 실패합니다.

+0

도움을 주셔서 감사합니다 PS_ACCT 테이블에 대한 REPORT_TYPE 열입니다. 오류가 계속 발생합니다. "INTO". SQLSTATE = 42601 "DB2 데이터베이스 오류 : ERROR [42601] [IBM] [DB2/AIX64] SQL0104N 예상치 못한 토큰"V1 "이"T.REPORT_TYPE AS " – user3396478

+0

DB2를 사용하고 있음을 언급하는 데 도움이 될 것입니다.하지만 어쨌든 오류 메시지는 무엇이 잘못되었는지를 알려줍니다. 추가 도움이 필요하면 질문에 실행중인 전체 코드를 게시하십시오. –

+0

이것은 실행하려고하는 전체 코드입니다. 'MSTR_ACCOUNT_ALL', 'REAL_ESTATE_EXP'AS V1.TREE_NODE, PS_ACCT V1 INNER FROM 'C' V1.ACCOUNT AS V1.REPORT_TYPE AS SELECT DISTINCT V1.TREE_NAME을 PS_TRAN F1 = ON F1.ACCOUNT V1.ACCOUNT INNER JOIN을 JOIN PS_ACCT V2 ON V2.REPORT_TYPE = F1.REPORT_TYPE 여기서 F1.ACCOUNT = V1.ACCOUNT – user3396478

관련 문제