오라클 쿼리 문의드립니다. 0 5 2,321

by 스물일곱 [2008.07.29 23:43:00]


안녕하세요.

오라클 쿼리를 문의드립니다.

SELECT /* r1100hdscm_w_etax_ezcont_broad_d_etax_trans_08_main3_list */ --S_CSAGREELIST 
CC.CONT_NUMB AS CONT_NUMB, 
TO_CHAR(AA.BD_DATE, 'yyyy-mm-dd') AS BD_DATE, 
TO_CHAR(AA.BD_BTIME, 'yyyy-mm-dd hh24:mi') AS BD_BTIME, 
TO_CHAR(BB.BD_BTIME, 'yyyy-mm-dd hh24:mi') AS BBBD_BTIME, 
AA.PROG_NAME AS PROG_NAME, 
AA.DEPT_CODE AS DEPT_CODE, 
F_TEC_GETDEPTNAME('2000', AA.DEPT_CODE) DEPT_NAME1, 
F_TEC_GETDEPTNAME('3000', AA.DEPT_CODE) DEPT_NAME2, 
AA.MD_CODE AS MD_CODE, 
AA.MD_NAME AS MD_NAME, 
AA.VEN_CODE AS VEN_CODE, 
EE.VEN_NAME AS VEN_NAME, 
F_TEC_GETADMINNAME((SELECT SIGN_USER_ID FROM TEC_CONT_CORP WHERE CONT_NUMB=CC.CONT_NUMB AND CONT_CHNG_NUMB=CC.CONT_CHNG_NUMB
AND CONT_CUST_GBN='100' AND CONT_CUST_SEQ='1')) AS A_SIGN_USER_ID, 
TO_CHAR(CC.INSERT_DATE, 'YYYY-MM-DD HH24:MI') AS CONT_DATE, 
F_TEC_GETSIGNDATE(CC.CONT_NUMB,'100') AS A_SIGN_DATE, 
F_TEC_GETSIGNDATE(CC.CONT_NUMB,'110') AS B_SIGN_DATE, 
TO_CHAR(CC.MODIFY_DATE, 'yyyy-mm-dd hh24:mi') AS DT_UPDATE, 
'합의서' AS FORM_FILENAME, 
'미작성' AS STATUS_NAME, 
'100' AS CONT_PROC_STAT,  
 --DECODE(CC.CONT_PROC_STAT, '100', '계약통지', '200', '계약서작성중', '300', '계약확인', '400', '현대서명예정', '500', '업체서명예정', '600', '계약완료', '700', '수기완료', '800', '계약폐기', '900', '중복삭제', '미작성') AS STATUS_NAME, 
'3' AS CONT_KIND, 
'' modify_status, 
'' chk2 
FROM 
(                
SELECT /*+ index (B pk_titem) */ 
C.DEPT_CODE AS DEPT_CODE, 
C.MD_CODE AS MD_CODE, 
C.MD_NAME AS MD_NAME, 
A.PROG_CODE AS PROG_CODE, 
A.BD_DATE AS BD_DATE, 
A.BD_BTIME AS BD_BTIME, 
B.VEN_CODE AS VEN_CODE, 
D.PROG_NAME
FROM  
TDTBROAD A,  
TITEM B,  
TMD C, 
TPROGRAM D
WHERE    
A.ITEM_CODE = B.ITEM_CODE 
AND B.MD_CODE = C.MD_CODE  
AND A.PROG_CODE = D.PROG_CODE
AND A.BD_DATE < TRUNC(SYSDATE) + 12 
AND NVL(A.LIVE_YN, '1') = '1'  
AND A.BD_DATE >= '20080629' 
AND A.BD_DATE <= '20080729' 
                             
GROUP BY C.DEPT_CODE, C.MD_CODE, C.MD_NAME, A.PROG_CODE, D.PROG_NAME, A.BD_DATE, A.BD_BTIME, B.VEN_CODE 
) AA, 
TEC_BROADCASTLIST BB, 
TEC_CONT_MASTER CC, 
VENDOR EE            
WHERE                  
AA.PROG_CODE = BB.PROG_CODE (+) 
AND AA.BD_DATE = BB.BD_DATE (+)                
--$WHERE33$                                               
AND AA.VEN_CODE = BB.VEN_CODE (+) 
AND BB.BROD_INDEX = CC.BROD_INDEX (+) 
AND AA.VEN_CODE = EE.VEN_CODE(+)         
AND CC.PRE_CONT_FLAG(+) = 'N'
AND AA.A_SIGN_DATE IS NULL
AND AA.B_SIGN_DATE IS NULL

 
ORDER BY AA.BD_BTIME

현재 이쿼리가.여러군데의 테이블의 컬럼을 가지고 와서 값들을 출력하는  쿼리 입니다.

이쿼리에서 제일 밑에 빨강색으로 체크 해놓은 부분을 추가 하고 싶은데요. 어떻게 해야할지..도통되질 않아서 이렇게 문의를 드립니다.

밑에 추가 해놓은 것처럼 그냥 추가하면 잘못된 식별자라고 오류가 뜨고. AA.이라는걸 빼도 식별자를 찾을수 없다는 오류가 나옵니다...

A_SIGN_DATE  이 알리안스들은 오라클에서 펑션을 사용해서 값을 가지고 온걸 이 알리안스에 넣어주는데 어떻게 해야 이 알리안스를 사용하면서 조건을 넣을수 있는지 문의를 드립니다...

by 채용근 [2008.07.30 00:09:37]
쿼리가 파싱되는 순서를 먼저 익히는게 도움이 될꺼 같습니다.

SELECT - (5)
FROM - (1)
WHERE - (2)
GROUP BY - (3)
HAVING - (4)
ORDER BY - (6)

by 스물일곱 [2008.07.30 09:54:39]
채용근님감사합니다. 어떻게 쿼리를 짜야할지 이제 조금씩 알게 되어 가네요.
근데 아직도 위에꺼는 어애해야할지..방법을 못찾고 있다는......ㅠ.ㅠ.

by 마농 [2008.07.30 10:15:01]
(2)번 조건절에서 (5)번 조회절의 알리아스를 판독할수는 없죠. 순서상..
1. 조건절에서 함수를 사용해서 조건을 주시던가.
2. 전체쿼리를 서브쿼리로 해서 다시 조건을 주시던가.

by finecomp [2008.07.30 10:16:26]
여기도 올리셨군요...^^;
인라인뷰로 한번 더 감싸서 Alias를 사용하시던가,
AND F_TEC_GETSIGNDATE(CC.CONT_NUMB,'100') IS NULL
AND F_TEC_GETSIGNDATE(CC.CONT_NUMB,'110') IS NULL
처럼 사용해야 합니다.

아래 제 답변도 참고 해 보세요.
http://kin.naver.com/detail/detail.php?d1id=1&dir_id=10110&eid=rUwRAdluDx6g3jVHVJuZT3mkc1rWBPEH

by 스물일곱 [2008.07.30 11:20:46]
감사합니다. 마농님. 파인컴님. 채용근님.
님들께서 알려주셔서 결국은 완료되었습니다.
이 어찌 감사를...;;
오라클 너무 짱힘드네요.. 파싱순서도 제대로 몰랐는데
이제서야 어떻게 쿼리를 짜야할지 조금씩 알아 가는거 갔습니다..
위의 쿼리는. 제가 짠 쿼리가 아니어서. 수정하는데 너무 애먹었네요..;;
행복한 하루 되세요.
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입