어떠한 조건에 해당되는 여러 로우중에서의 조건 검색 질문입니다. 0 4 1,738

by 권pro [2013.11.27 10:22:00]


K-1.jpg (59,349Bytes)

테이블이 2개가 있는데요.
두 테이블 조인해서 가지고 옵니다.

SELECT  TB.BUDG_SEQ
    , REPLACE( REPLACE(REPLACE(TO_CHAR(SYSDATE,'YYYY* MM^ DD&'), '*' ,'년') ,'^' ,'월' ),'&' ,'일' ) AS NOWDATE
    , TB.BG_CD
    , TB.BIZ_CD
    , TB.POOL_PJT_ID
    , TB.REV_NO
    , TB.PROB_EXAM_YN
    , TB.DEPT_NEGO_YN
    , TB.PRE_BUDG_PURP
    , TB.PRE_BUDG_ITEM
    , TB.REG_ID
    , TB.REG_DT
    , TB.MOD_ID
    , TB.MOD_DT
    , TD.BUDG_SEQ
    , TD.TOP_KND_NM
    , TD.MID_KND_NM
    , TD.ITEM_CD
    , TD.ITEM_NM
    , TD.ESTMT_AMT
    , TD.PRE_BUDG_AMT
    , TD.EXEC_RATE
    , TD.REM
FROM T_QG42_PRE_BUDG TB,
   T_QG42_PRE_BUDG_DTL TD
WHERE TB.BUDG_SEQ = TD.BUDG_SEQ
AND TD.BUDG_SEQ= 0000049

해당하는 PK 키를 가지고 검색하여   T_QG42_PRE_BUDG_DTL 테이블에서 데이터를 가지고 와야하는데요.
캡춰 보시면 TD.ITEM_CD에서 번호가 16,17,18,19,20에서  NULL인 로우는 빼서 가지고 와야하거든요.

SELECT * FROM
    (
    SELECT TL.DTL_SEQ
    , TL.BUDG_SEQ
    , TL.TOP_KND_NM
    , TL.MID_KND_NM
    , TL.ITEM_CD
    , TL.ITEM_NM
    , TL.ESTMT_AMT
    , TL.PRE_BUDG_AMT
    , TL.EXEC_RATE
    , TL.REM
    FROM T_QG42_PRE_BUDG_DTL TL
    WHERE TL.BUDG_SEQ = 000049
    AND TL.ITEM_CD IN (16,17,18,19,20)
    ) T1
WHERE T1.ITEM_NM IS NOT NULL   OR    T1.ESTMT_AMT IS NOT NULL   OR   T1.PRE_BUDG_AMT IS NOT NULL

저걸 어떻게 합쳐야 할지 모르겠어요.
IN을 쓰면서 저렇게 IN에 포함되는 로우만 빼버릴수 있는 방법이 없을까요?
UNION ALL을 써야할까요??

by 우리집아찌 [2013.11.27 10:37:51]
-- 맞는답인지 모르겠네요..
WITH T AS (
SELECT '15' V1 , 'T' V2 ,'' V3 ,'' V4 FROM DUAL UNION ALL
SELECT '16' , '' , '' , '' FROM DUAL UNION ALL
SELECT '17' , '' , '' , '' FROM DUAL UNION ALL
SELECT '18' , '' , '' , '' FROM DUAL 
)

SELECT * FROM T
WHERE V1 IN ('15','16','17','18')
 AND V2 || V2 || V3 || V4 IS NOT NULL    

by 권pro [2013.11.27 11:02:26]
감사합니다^^ 참조해서 사용해보겠습니다!!하지만 제가 원하는 답은 아니네요.
IN의 항목만 출력이 아니라 전부 출력은 하되 IN 내용에서 조건에 만족해야해요~

by michael [2013.11.27 10:55:12]
질문내용이

1. item_cd가 null이고
ITEM_NM IS NOT NULL ,ESTMT_AMT IS NOT NULL , PRE_BUDG_AMT IS NOT NULL
인것을 원하시는 건가요??

2. item_cd가 16, 17, ~20에서 ITEM_NM IS NOT NULL ,ESTMT_AMT IS NOT NULL , PRE_BUDG_AMT IS NOT NULL
인것을 원하시는 건가요??

by 권pro [2013.11.27 11:02:12]
2번입니다^^; 제가 봐도 질문이 너무 애매했네요.
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입