VIEW 테이블 만들고 싶은데... 여러 고수님의 조언 부탁드립니다. 0 3 2,860

by 왕보초 [Oracle 기초] Oracle 오라클 [2020.05.24 05:24:14]


제가 쿼리를 잘 못 짠것 같은데~~~ 확인 부탁드립니다.

LABBO데이터가 없으면 LABCB 데이터를 보여주고  값이 있으면 LABBO  ARCCBT_NO(그룹번호) MAX 값만 정보만 보여주도록 수정

하여 VIEW 테이블 만들고 싶은데... 여러 고수님의 조언 부탁드립니다.(쿼리 수정)

 

Select
    DECODE(LABBO.ARCCBT_NO          , NULL, '1'                    , LABBO.ARCCBT_NO)           AS ARCCBT_NO,
    DECODE(LABBO.CMPNY_NO           , NULL, 'ORGIN'                , 'ADD')                     AS TBL_TYPE,
    DECODE(LABBO.CMPNY_NO           , NULL, LACB.CMPNY_NO          , LABBO.CMPNY_NO)            AS CMPNY_NO,
    DECODE(LABBO.BUDGET_NO          , NULL, LACB.BUDGET_NO         , LABBO.BUDGET_NO)           AS BUDGET_NO,
    DECODE(LABBO.APP_NO             , NULL, LACB.APP_NO            , LABBO.REQST_CM_NO)         AS REQST_CM_NO,
    DECODE(LABBO.APP_NO             , NULL, LACB.APP_NO            , LABBO.APP_NO)              AS APP_NO,
    DECODE(LABBO.BSNS_NM            , NULL, LACB.BSNS_NM           , LABBO.BSNS_NM)             AS BSNS_NM,
    DECODE(LABBO.TAXITM_IEM         , NULL, LACB.TAXITM_IEM ,        LABBO.TAXITM_IEM)          AS TAXITM_IEM,
    DECODE(LABBO.BUDGET_IEM         , NULL, LACB.BUDGET_IEM ,        LABBO.BUDGET_IEM)          AS BUDGET_IEM,
    DECODE(LABBO.CNT_NCSSRY         , NULL, LACB.CNT_NCSSRY ,        LABBO.CNT_NCSSRY)          AS CNT_NCSSRY,
    DECODE(LABBO.CNT_SUBSIDY        , NULL, LACB.CNT_SUBSIDY,        LABBO.CNT_SUBSIDY)         AS CNT_SUBSIDY,
    DECODE(LABBO.CNT_SLFSHR         , NULL, LACB.CNT_SLFSHR ,        LABBO.CNT_SLFSHR)          AS CNT_SLFSHR,
    DECODE(LABBO.DETAIL             , NULL, LACB.DETAIL     ,        LABBO.DETAIL)              AS DETAIL,
    DECODE(LABBO.BSNS_ETC           , NULL, LACB.BSNS_ETC   ,        LABBO.BSNS_ETC)            AS BSNS_ETC,
    DECODE(LABBO.DELETE_AT          , NULL, LACB.DELETE_AT         , LABBO.DELETE_AT)           AS DELETE_AT,
    DECODE(LABBO.REGIST_DT          , NULL, LACB.REGIST_DT         , LABBO.REGIST_DT)           AS REGIST_DT,
    DECODE(LABBO.REGIST_ID          , NULL, LACB.REGIST_ID         , LABBO.REGIST_ID)           AS REGIST_ID,
    DECODE(LABBO.UPDT_ID            , NULL, LACB.UPDT_ID           , LABBO.UPDT_ID)             AS UPDT_ID,
    DECODE(LABBO.UPDT_DT            , NULL, LACB.UPDT_DT           , LABBO.UPDT_DT)             AS UPDT_DT
 FRom LAB_BIZ_BUDGET_ORIBDGT LABCB 
 LEFT JOIN (Select * From LAB_CNCLS_BDGTPR LABBOIN 
                     Where LABBOIN.ARCCBT_NO = (select MAX(ARCCBT_NO) From LP_AGREM_CNCLS_BDGTPR where REQST_CM_NO = LABBOIN.REQST_CM_NO) ) LABBO
                                       ON 1=1
                                      AND LABBO.CMPNY_NO           = LACB.CMPNY_NO
                                      AND LABBO.REQST__NO          = LACB.APP_NO
                                      AND LABBO.BUDGET_TAXITM_IEM  = LACB.BUDGET_TAXITM_IEM
                                      AND LABBO.BUDGET_BUDGET_IEM  = LACB.BUDGET_BUDGET_IEM

                                                         -- AND LABBO.BSNS_NM            = LACB.BSNS_NM

 

by 마농 [2020.05.25 08:13:00]

쿼리가 잘못된 것 같다고 판단하는 이유가 있나요?
구체적으로 결과 예를 들어 설명해 주세요.
DECODE 대신 NVL 사용하면 좋을 듯 하네요.


by 왕보초 [2020.05.25 10:56:38]

우선 쿼리는 수정했는데.(문제점..

 1. 우선 위에 쿼리에 사업명도 조건에 걸었어야 했는데.. 안것이 었고...(주석처리)

 2.  처음 쿼리에 ON 절에  조건 중  MAX값을 조회 조건을 걸어서 ORA-01799 부분은 수정해서 해결했구요~~~

----------------------------------------------------------------------------------------------------------------------------------------------

제가 원하는 결과는 LABBO 데이터가 없으면 LACB 테이블 데이터만를 보여주고 LABBO 데이터가 있으면  LABBO 테이블 데이터만 보여주고 싶은 부분인데.....

LABBO(22건) , LACB(24건) 경우  LABBO데이터가 없는 LACB건의 데이터가 보여서 쿼리 자체가 잘 못 된것 같은데... 뭘 어떻게 해야 할 지 잘 모르겠네요???? 

 

 


by 마농 [2020.05.25 12:59:04]

잘못된 것 같다는 확신 없는 표현으로는 해결이 안됩니다.
구체적으로 뭐가 잘못되었는지를 명확하게 표현해 주세요.
뭐가 문제인지 모르는 상태에서 질문해 봐야 소용 없습니다.
원하는 결과에 대한 설명을 명확하게 해주세요.

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