DB 쿼리에 있는 행마다 다르게 WHERE절을 주고 싶습니다. 0 6 1,218

by 짱구 [2015.04.16 10:41:06]


SELECT A

  FROM TABLE

 WHERE A = 1이면 조건1번실행

           A = 2 이면 조건 1번 ,조건 2번실행

이러한 방법으로 해야하는데 도저히 방법이 생각이 안납니다.

조언좀 부탁드립니다.

by 창조의날개 [2015.04.16 10:56:03]

기본적으로 Dynamic SQL을 사용하셔야 하구요..

SELECT절에서 DECODE를 이용하는 편법이나

WHERE절에서 LIKE나 OR를 이용하는 편법도 있을 수 있습니다.

정확히 어떤 데이터를 어떻게 보여줘야 하는지 정리 해서 질문하시면 

좀더 구체적인 방법이 나올수도 있겠네요..


by 쿼리back [2015.04.16 11:01:01]

참조의 날개님이 설명한 방법중 가장 간단한 OR 를 쓰는 방법은 

WHERE (A = 1 AND 조건 1) OR (A = 2 AND 조건 2)


by 짱구 [2015.04.16 11:03:21]

SELECT A /* 국내국외구분 */

        , B /* 결재상태1  */

        , C /* 결재상태2 */

  FROM TABLE

WHERE A가 국내이면 B(결재상태 1)가 결재완료 인것만 보여줘야됩니다. (결재상태2는 NULL 상태)

           A가 국외이면 B(결재상태 1), C(결재상태 2) 가 둘다 결재완료상태인것만 보여줘야됩니다.

 

아이바티스를 사용하고 있는데

INNOTEMPTY 와 ISNOTNULL 을 활용해서해보려고했는데 잘 안되네요...

 

 


by 쿼리back [2015.04.16 11:11:57]

 ibatis 를 사용하시는 거면, 이렇게 사용하는 방법도 있네요

WHERE 1=1
<isEqual property="a" comparevalue = "1">
    AND A = 1 and B = '결재완료' and C is null
</isEqual>
<isEqual property="a" comparevalue = "2">
    AND A = 2 and B = '결재완료' and C = '결재완료'
</isEqual>

 


by 마농 [2015.04.16 11:47:42]
-- 조건 1번은 어차피 공통 사항이네요 조건에 따라 나눌 필요 없구요.
-- 조건 2번만 처리하면 되겠네요.
 WHERE b = '결재완료'
   AND ( (a = 1 AND c IS NULL) OR (a = 2 AND c = '결재완료') )
;

 


by 짱구 [2015.04.16 13:47:40]

감사합니다 해결되었습니다^^

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