쿼리 조건 주는데 오류가 계속 나서요 0 3 1,423

by 이종민 [2012.10.22 09:22:33]



SELECT
    I_ID, I_PGM_ID, N_PGM, Y_YN, Y_INSERT, Y_INQUIRY, I_DV_Y,
    DECODE(I_DV_Y, 'ALL','전체조회', F_DIVISION(I_DV_Y)) AS N_DV_Y
    FROM(    
    SELECT
    ':(A.I_ID)' I_ID, A.I_PGM_ID, A.N_PGM,
    DECODE((SELECT I_PGM_ID FROM CS_PROGRAM_AUTR WHERE I_ID = ':(A.I_ID)' AND I_PGM_ID = A.I_PGM_ID), NULL, '□','■') Y_YN,
    DECODE((SELECT Y_INSERT FROM CS_PROGRAM_AUTR WHERE I_ID = ':(A.I_ID)' AND I_PGM_ID = A.I_PGM_ID), 'Y', '■','□') Y_INSERT,
    DECODE((SELECT Y_INQUIRY FROM CS_PROGRAM_AUTR WHERE I_ID = ':(A.I_ID)' AND I_PGM_ID = A.I_PGM_ID), 'Y', '■','□') Y_INQUIRY,
    (SELECT I_DV_Y FROM CS_PROGRAM_AUTR WHERE I_ID = ':(A.I_ID)' AND I_PGM_ID=A.I_PGM_ID) I_DV_Y
    FROM
    CS_PROGRAM_M A  
    )   
    ORDER BY I_PGM_ID

이게 원래 쿼리고 권한이 있으면 ■, 없으면 □ 이런식으로 출력이 되는데
하나라도 권한이 있는 ■ 의 경우만 출력이 되게끔 수정을 해야하는데요


SELECT
    I_ID, I_PGM_ID, N_PGM, Y_YN, Y_INSERT, Y_INQUIRY, I_DV_Y,
    DECODE(I_DV_Y, 'ALL','전체조회', F_DIVISION(I_DV_Y)) AS N_DV_Y
    FROM(    
    SELECT
    ':(A.I_ID)' I_ID, A.I_PGM_ID, A.N_PGM,
    DECODE((SELECT I_PGM_ID FROM CS_PROGRAM_AUTR WHERE I_ID = ':(A.I_ID)' AND I_PGM_ID = A.I_PGM_ID), NULL, '□','■') Y_YN,
    DECODE((SELECT Y_INSERT FROM CS_PROGRAM_AUTR WHERE I_ID = ':(A.I_ID)' AND I_PGM_ID = A.I_PGM_ID), 'Y', '■','□') Y_INSERT,
    DECODE((SELECT Y_INQUIRY FROM CS_PROGRAM_AUTR WHERE I_ID = ':(A.I_ID)' AND I_PGM_ID = A.I_PGM_ID), 'Y', '■','□') Y_INQUIRY,
    (SELECT I_DV_Y FROM CS_PROGRAM_AUTR WHERE I_ID = ':(A.I_ID)' AND I_PGM_ID=A.I_PGM_ID) I_DV_Y
    FROM
    CS_PROGRAM_M A WHERE Y_YN = 'Y' OR Y_INSERT = 'Y' OR Y_INQUIRY = 'Y'
   
    )   
    ORDER BY I_PGM_ID


웨어절에 저런식으로 조건을 주었는데 부적합한 식별자라고 에러가 뜨네요
조건을 바꿔줘야 하는지 무슨 문제인지 잘 모르겠네요
by 부쉬맨 [2012.10.22 09:32:00]
앨리어스 A를 붙여보시죠.

by 마농 [2012.10.22 10:12:04]

Select 절의 Alias 를 같은 레벨의 Where 절에서 바로 사용 못합니다.
Alias 주기 전 계산식을 그대호 사용하여 조건을 주시던가...
아예 Where 절을 밖으로 빼시면 안쪽 Alias 사용이 가능하지요.


by 이종민 [2012.10.22 10:14:20]

where 조건 주는 테이블이 다른 곳이었네요ㅠ
해결했습니다

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입