반응형
Where 절 내의 if 문
다음을 포함하는 쿼리로 작업 중입니다."WHERE" 절 내에 IF" 문이 있습니다.그러나 PL\SQL Developer에서 실행 중 오류가 발생했습니다.정확한 질문을 도와주실 분 있나요?다음은 질문입니다.
SELECT t.first_name,
t.last_name,
t.employid,
t.status
FROM employeetable t
WHERE IF status_flag = STATUS_ACTIVE then t.status = 'A'
IF status_flag = STATUS_INACTIVE then t.status = 'T'
IF source_flag = SOURCE_FUNCTION then t.business_unit = 'production'
IF source_flag = SOURCE_USER then t.business_unit = 'users'
AND t.first_name LIKE firstname
AND t.last_name LIKE lastname
AND t.employid LIKE employeeid;
"ORA-00920: 잘못된 관계 연산자" 오류가 표시됩니다.
주변에 브래킷 배치status_flag = STATUS_ACTIVE
결과적으로 "ORA-00907: 오른쪽 괄호 누락" 오류가 발생합니다.
CASE는 도움이 될 수 있습니다.
SELECT t.first_name,
t.last_name,
t.employid,
t.status
FROM employeetable t
WHERE t.status = (CASE WHEN status_flag = STATUS_ACTIVE THEN 'A'
WHEN status_flag = STATUS_INACTIVE THEN 'T'
ELSE null END)
AND t.business_unit = (CASE WHEN source_flag = SOURCE_FUNCTION THEN 'production'
WHEN source_flag = SOURCE_USER THEN 'users'
ELSE null END)
AND t.first_name LIKE firstname
AND t.last_name LIKE lastname
AND t.employid LIKE employeeid;
CASE 문은 여러 조건을 평가하여 단일 값을 생성합니다.그래서 첫 번째 사용법에서는 status_flag 값을 확인하고 값에 따라 'A', 'T' 또는 null을 반환하고 t.status와 비교합니다.두 번째 CASE 문이 있는 business_unit 열도 마찬가지입니다.
당신은 그렇게 IF를 사용할 수 없습니다.AND 및 OR로 원하는 작업을 수행할 수 있습니다.
SELECT t.first_name,
t.last_name,
t.employid,
t.status
FROM employeetable t
WHERE ((status_flag = STATUS_ACTIVE AND t.status = 'A')
OR (status_flag = STATUS_INACTIVE AND t.status = 'T')
OR (source_flag = SOURCE_FUNCTION AND t.business_unit = 'production')
OR (source_flag = SOURCE_USER AND t.business_unit = 'users'))
AND t.first_name LIKE firstname
AND t.last_name LIKE lastname
AND t.employid LIKE employeeid;
언급URL : https://stackoverflow.com/questions/15396217/if-statement-within-where-clause
반응형
'source' 카테고리의 다른 글
'root' 사용자에 대한 액세스가 거부되었습니다(암호 사용: 아니요). (0) | 2023.07.25 |
---|---|
구성 요소 Vue 3에서 속성 렌더링 방법 (0) | 2023.07.20 |
ExecuteScalar를 사용하여 삽입된 행에서 생성된 ID를 가져오는 방법은 무엇입니까? (0) | 2023.07.20 |
오라클 11g 클라이언트를 10g 서버와 함께 사용해도 괜찮습니까? (0) | 2023.07.20 |
열을 삭제하면 Oracle에서 어떻게 됩니까? (0) | 2023.07.20 |