database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
ㆍOracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
Oracle Q&A 41356 게시물 읽기
No. 41356
where 절 조건 만드는 질문
작성자
임재흥(jaeheung)
작성일
2017-03-13 17:08ⓒ
2017-03-13 17:12ⓜ
조회수
5,741

 

WITH TAB1 AS (
SELECT '01' AS COL_A FROM DUAL UNION ALL
SELECT '02' FROM DUAL UNION ALL
SELECT '03' FROM DUAL UNION ALL
SELECT '05' FROM DUAL
)
SELECT COL_A
  FROM TAB1
 WHERE 1 = 1
   AND COL_A IN ( SELECT COL_S1
                    FROM ( SELECT '01' AS DIV, '01' AS COL_S1 FROM DUAL UNION ALL
                           SELECT '02', '02' FROM DUAL UNION ALL
                           SELECT '03', '03' FROM DUAL UNION ALL
                           SELECT '04', '01' FROM DUAL UNION ALL
                           SELECT '04', '03' FROM DUAL UNION ALL
                           SELECT '05', '05' FROM DUAL ) TMP
                    WHERE 1 = 1
                      AND DIV = '04' )

 


상기 SQL 처럼 특정 한가지 케이스만 두가지 값을 가져야하는 경우가 있는데...

 

요런 경우 위처럼 복잡하게 하지 않아도 적용될수 있는 SQL 이 있을까요?

 

위의 케이스는 4번 구분의 경우 '01'과 '03'을 가져옵니다.

 

자료가 많은 테이블이라 조회 대상 컬럼값을 치환하고 조인하면 안될거 같습니다.

이 글에 대한 댓글이 총 2건 있습니다.

SELECT col_a
  FROM tab1
 WHERE 1 = 1
   AND col_a IN ( DECODE(:v, '04', '01', :v)
                , DECODE(:v, '04', '03')
                )
;

마농(manon94)님이 2017-03-13 17:30에 작성한 댓글입니다.

그냥 두쌍으로해서 하나를 안주면 되는군요.

마농님 답변 감사합니다.

 

임재흥(jaeheung)님이 2017-03-13 17:32에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
41360정렬 문의 드립니다. [1]
순간선택
2017-03-17
5954
41359이전 data [1]
마당쇠
2017-03-17
5804
41358조회 조건 [3]
아폴론
2017-03-17
5928
41356where 절 조건 만드는 질문 [2]
임재흥
2017-03-13
5741
41355리눅스 오라클 인스턴스 추가 [1]
webma
2017-03-10
6433
41354한글에 대한 RPAD 사용법 [3]
초보
2017-03-09
6151
41353SQL 조회 순서 정리 하는방법
spc
2017-03-09
6002
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2023 DSN, All rights reserved.
작업시간: 0.051초, 이곳 서비스는
	PostgreSQL v16.1로 자료를 관리합니다