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 41334 게시물 읽기
No. 41334
컬럼의 결과를 IN으로 조회하는 방법?
작성자
작성자(shindong)
작성일
2017-02-14 12:53
조회수
6,606

다음과 같이 컬럼의 결과를 IN으로 조회하는 방법을 알고싶습니다

 

예를들어 tbl1과 tbl2가 있는경우

tbl2의 그룹1을 조회하면 tbl1의 국어, 영어가 조회되고

tbl2의 그룹2를 조회하면 수학, 과학이 조회될 수 있을까요?

 

WITH TBL1 AS (

SELECT 11 COL_ID, '국어' COL_NM FROM DUAL UNION ALL

SELECT 12 COL_ID, '수학' COL_NM FROM DUAL UNION ALL

SELECT 13 COL_ID, '영어' COL_NM FROM DUAL UNION ALL

SELECT 14 COL_ID, '과학' COL_NM FROM DUAL 

)

,

TBL2 AS (

SELECT '그룹1' GROUP_NM, '11,13' CODE_NM FROM DUAL UNION ALL

SELECT '그룹2' GROUP_NM, '12,14' CODE_NM FROM DUAL 

)

SELECT TBL1.COL_NM

  FROM TBL1

 WHERE TBL1.COL_ID IN (SELECT CODE_NM FROM TBL2 WHERE TBL2.GROUP_NM = '그룹1');

 

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

WITH TBL1 AS (

SELECT 11 COL_ID, '국어' COL_NM FROM DUAL UNION ALL

SELECT 12 COL_ID, '수학' COL_NM FROM DUAL UNION ALL

SELECT 13 COL_ID, '영어' COL_NM FROM DUAL UNION ALL

SELECT 14 COL_ID, '과학' COL_NM FROM DUAL

)

,

TBL2 AS (

SELECT '그룹1' GROUP_NM, '11,13' CODE_NM FROM DUAL UNION ALL

SELECT '그룹2' GROUP_NM, '12,14' CODE_NM FROM DUAL

)

SELECT B.COL_NM

FROM (SELECT TO_NUMBER(REGEXP_SUBSTR(CODE_NM, '[^,]+', 1, LV)) COL_ID

FROM TBL2,

(SELECT LEVEL LV FROM DUAL CONNECT BY LEVEL < 30)

WHERE TBL2.GROUP_NM = '그룹1'

AND REGEXP_COUNT(CODE_NM, ',') <= LV) A

, TBL1 B

WHERE A.COL_ID = B.COL_ID

 

손재균(iikii)님이 2017-02-14 13:01에 작성한 댓글입니다.
이 댓글은 2017-02-14 13:31에 마지막으로 수정되었습니다.

WITH TBL1 AS (

SELECT 11 COL_ID, '국어' COL_NM FROM DUAL UNION ALL

SELECT 12 COL_ID, '수학' COL_NM FROM DUAL UNION ALL

SELECT 13 COL_ID, '영어' COL_NM FROM DUAL UNION ALL

SELECT 14 COL_ID, '과학' COL_NM FROM DUAL

)

,

TBL2 AS (

SELECT '그룹1' GROUP_NM, '11,13' CODE_NM FROM DUAL UNION ALL

SELECT '그룹2' GROUP_NM, '12,14' CODE_NM FROM DUAL

)

SELECT A.COL_NM

FROM TBL1 A,TBL2 B

WHERE INSTR(','||B.CODE_NM||',',','||A.COL_ID||',') > 0

AND B.GROUP_NM = '그룹1'

 

 

손재균(iikii)님이 2017-02-14 13:05에 작성한 댓글입니다.
이 댓글은 2017-02-14 13:24에 마지막으로 수정되었습니다.

 오 감사합니다~~~

작성자(shindong)님이 2017-02-14 13:28에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
41337BLOB time select는 어떻게 해야 하나요? [1]
김기훈
2017-02-18
6201
41336대량 delete 질문드립니다ㅠ [1]
이름
2017-02-17
6768
41335힌트 문의사항 입니다.
이민우
2017-02-17
6172
41334컬럼의 결과를 IN으로 조회하는 방법? [3]
작성자
2017-02-14
6606
41333bypass_ujvc 옵션을 대체하는 방법이 무엇인가요? [2]
앙마승재
2017-02-13
6540
41332오라클9i -> 오라클10i로 이전 [1]
매수신호
2017-02-13
6371
41331오라클 데이터파일 관련 질문입니다 [2]
이민호
2017-02-10
6209
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.018초, 이곳 서비스는
	PostgreSQL v16.4로 자료를 관리합니다