웹개발 관련

[ORACLE] WHERE CASE 검색

반응형

 


예시)
연결된 테이블 DOC - ITEM , ITEM - ITEM_USE 
DOC - ITEM : 타입별로 연결된 것과 연결되지 않은 데이터가 존재. 
ITEM - ITEM_USE : 연결. 
>> ITEM에서 특정 타입(A,C)와 ITEM_USE에서 타입이 Y인 데이터 추출하기. 

참고 : https://asktom.oracle.com/pls/apex/f?p=100:11:0::::P11_QUESTION_ID:9532075300346073664 


 


[ 테이블 - DOC ]
IDX	TITLE	TYPE	ITEM_IDX
-----------------------
1	1번		A		1
2	2번		C		2
3	3번		B
4	4번		A		3
5	5번		D		

[ 테이블 - ITEM ]
ITEM_IDX	TITLE	
-------------------------
1			ITEM_1
2			ITEM_2
3			ITEM_3


[ 테이블 - ITEM_USE ]

USE_IDX	ITEM_IDX USE_YN
---------------------------
1		1		Y
2		2		Y
3		3		N



SELECT 
	D.IDX, 
	D.TITLE
FROM DOC D
LEFT OUTER JOIN ITEM I
ON D.ITEM_IDX = I.ITEM_IDX
LEFT OUTER JOIN ITEM_USE U
ON I.ITEM_IDX = U.ITEM_IDX
WHERE 
	CASE 
		WHEN (D.TYPE = 'A' OR D.TYPE = 'C') AND U.USE_YN='Y'
		THEN 1
		WHEN (D.TYPE = 'B')
		THEN 1
		ELSE 0
	END =1;
	
──────────────────────────────────────────	
결과    
IDX	TITLE
--------------
1	1번
2	2번
3	3번	
	
	
	
		



반응형