비교는 abc 에 Months_Between 하지 마시고
abc 는 그대로 두고 sysdate 에 Add_Months 해서 비교하시는게 좋습니다.
날짜 컬럼에 대한 문제는 컬럼의 타입에 따라 풀이가 다릅니다.
우선 날짜가 저장된 컬럼 abc 의 데이터 타입 및 저장 형식을 알려주세요.
Date 인지? Varchar2 인지? Varchar2 라면 자리수와 저장형식은?
1. Date Type 인 경우
WHERE abc >= ADD_MONTHS(sysdate, -DECODE(:v, 'A', 3, 'B', 6))
2. Varchar2(8) 'yyyymmdd' 인 경우
WHERE abc >= TO_CHAR(ADD_MONTHS(sysdate, -DECODE(:v, 'A', 3, 'B', 6)), 'yyyymmdd')