2015-01-16 3 views
0

아래의 CASE WHEN 문과 함께 ORA-00936: missing expression 오류가 발생합니다. 아마도 rownum이 원인일까요? 나는 또한 아무 소용이 LIMIT 1TOP 1을 시도했다 (하지만 오라클 SQL의 일이 아니다) 기본적으로ORA-00936 : CASE WHEN 하위 쿼리로 표현이 누락되었습니다.

아래 CASE WHEN가 하위 쿼리가 하나 개 이상의 값 (v_date)을 반환 할 때 잡아 하나를 선택하는 것입니다 두 개의 복제본 중

SELECT DISTINCT 
g.v_type AS Type, 
g.f_group AS Group, 
g.v_no AS Number, 
g.v_date AS Date, 
g.a_year AS Year, 
CASE WHEN COUNT(SELECT DISTINCT v_date 
       FROM glv 
       WHERE v_type_reference = g.v_type AND v_no_reference = g.v_no AND g.com = com) = '1' 
    THEN (SELECT DISTINCT v_date 
      FROM glv 
      WHERE v_type_reference = g.v_type AND v_no_reference = g.v_no AND g.com = com) 
    ELSE (SELECT v_date 
      FROM glv 
      WHERE v_type_reference = g.v_type AND v_no_reference = g.v_no AND g.com = com AND rownum = 1) 
    END AS LLD 
FROM glv g 
WHERE g.a_year = '2015' 

답변

2

카운트와 선택 절이 섞여 있습니다. 이 :

CASE WHEN COUNT(SELECT DISTINCT v_date 

CASE WHEN (SELECT COUNT(DISTINCT v_date) 

당신의 별명 중 일부는 예약 된 단어해야하지만, 난 당신이 게시물에 대한 그 변경했다고 가정하면 정확히와 함께 ORA-00923를 얻을 것 같은 질문에.

제쳐두고, a_year 필드가 숫자 인 경우 '2015'은 따옴표로 묶어서는 안됩니다. 마찬가지로 숫자 비교에서 '1 '은 문자열이 아니라 숫자 여야합니다.