2014-09-01 2 views
0

나는 사용자가 1 년을 넣는 텍스트 필드가 :the_SCHEME_YEAR입니다. 그런 다음 해당 연도의 데이터를 가져옵니다. 그러나 사용자가 텍스트 필드를 비워두면 모든 해를 되찾고 싶습니다.WHERE 변수의 바인드 변수가 NULL 인 경우 모든 데이터를 반환합니다.

이것은 내가 개발 한 코드이지만 :the_SCHEME_YEAR을 고객이 공백으로 남겨두면 모든 연도를 되돌릴 수 없습니다.

AND the_year in NVL(:the_SCHEME_YEAR, to_char('2005,'||'2006,'||'2007')) 

모든 도움말이 도움이 될 것입니다.

SELECT the_year 
    , ent_type 
    , SUM (a.no_of_parts) number_ents 
    , SUM (ent_value * a.no_of_ents) value_ents 
    FROM TEST_REGISTER A 
WHERE the_year > 2004 and the_year <= the_max_year 
    AND ent_type is not null 
    AND the_year in NVL(:the_SCHEME_YEAR, to_char('2005,'||'2006,'||'2007')) 
GROUP BY the_year, ent_type 
ORDER BY 1 

답변

0

이 시도 :

AND ( (:the_SCHEME_YEAR is null and the_year in (2005, 2006, 2007)) 
    OR the_year = :the_SCHEME_YEAR 
    ) 

합니다 (SQL in 연산자는 값 목록, 그들 중이 아닌 연결된 문자열이 필요합니다.)

+0

활 토니을 가져 가라. 나는 F **** g 라디오 버튼, LOV에 대해 알고 있었고 코드가 그 일을하는 몇 가지 SQL이 있어야한다는 것을 알고있었습니다. 고맙습니다. –

관련 문제