Q&A

  • [두번째질문] 기간별 Select좀 보아주세요..
오라클 디비에 필드가 ayear 그리고 amnth 이렇게 년과 월이 있습니다

각 필드에는 '2000' 그리고 '01' 이렇게 년,월이 텍스트형으로 입력 되어 있습니다.

이것을 2000년 01 ~ 2001년 01월 까지 Select 하는데요...



sql.add('select * from Selectdb');

sql.add('where((a_year >= :P_year) and (a_mnth >= :P_stmm))');

sql.add(' and((a_year <= :P_year1) and (a_mnth <= :P_tomm))');

parambyname('P_year').asstring := year;

parambyname('P_year1').asstring := year1;

parambyname('P_stmm').asstring := stmm;

parambyname('P_tomm').asstring := tomm;



이렇게 하면 2000.01~ 2000.12하면 잘 되는데 2000.01 ~ 2001.01 하면 각년도의 01월

데이타만 불러옵니다.

어떤 님이 Between을 써보라고 하셨어요 그래서



sql.add('where ((a_year + a_mnth) between :p_stym and :p_enym)');

parambyname('P_stym').asstring := year+stmm;

parambyname('P_enym').asstring := year1+tomm

이렇게 하니 데이타가 없다고... 조건에 맞질 않습니다.



또다르게

sql.add('where((a_year + a_mnth) >= :P_stmm) and ((a_year +a_mnth= :P_tomm)');

parambyname('P_stmm').asstring := year + stmm;

parambyname('P_tomm').asstring := year + tomm;

이것 역시 데이타가 없다고... 조건에 맞질 않습니다.



고수님들 어떻게 해야 하나요 Where절을 어떻게 해야 2년여에 걸친 데이타를

정확히 불러 올수 있나요? 하수머리로 곰곰히 생각해도 영 않됩니다.

2  COMMENTS
  • Profile
    지나가는.. 2001.02.12 20:50
    sql.add('where a_year||a_mnth between :P_year||:P_stmm and :P_year1||:P_tomm');

    parambyname('P_year').asstring := year;

    parambyname('P_year1').asstring := year1;

    parambyname('P_stmm').asstring := stmm;

    parambyname('P_tomm').asstring := tomm;



    이렇게 하면 안나올까요?





    초보 wrote:

    > 오라클 디비에 필드가 ayear 그리고 amnth 이렇게 년과 월이 있습니다

    > 각 필드에는 '2000' 그리고 '01' 이렇게 년,월이 텍스트형으로 입력 되어 있습니다.

    > 이것을 2000년 01 ~ 2001년 01월 까지 Select 하는데요...

    >

    > sql.add('select * from Selectdb');

    > sql.add('where((a_year >= :P_year) and (a_mnth >= :P_stmm))');

    > sql.add(' and((a_year <= :P_year1) and (a_mnth <= :P_tomm))');

    > parambyname('P_year').asstring := year;

    > parambyname('P_year1').asstring := year1;

    > parambyname('P_stmm').asstring := stmm;

    > parambyname('P_tomm').asstring := tomm;

    >

    > 이렇게 하면 2000.01~ 2000.12하면 잘 되는데 2000.01 ~ 2001.01 하면 각년도의 01월

    > 데이타만 불러옵니다.

    > 어떤 님이 Between을 써보라고 하셨어요 그래서

    >

    > sql.add('where ((a_year + a_mnth) between :p_stym and :p_enym)');

    > parambyname('P_stym').asstring := year+stmm;

    > parambyname('P_enym').asstring := year1+tomm

    > 이렇게 하니 데이타가 없다고... 조건에 맞질 않습니다.

    >

    > 또다르게

    > sql.add('where((a_year + a_mnth) >= :P_stmm) and ((a_year +a_mnth= :P_tomm)');

    > parambyname('P_stmm').asstring := year + stmm;

    > parambyname('P_tomm').asstring := year + tomm;

    > 이것 역시 데이타가 없다고... 조건에 맞질 않습니다.

    >

    > 고수님들 어떻게 해야 하나요 Where절을 어떻게 해야 2년여에 걸친 데이타를

    > 정확히 불러 올수 있나요? 하수머리로 곰곰히 생각해도 영 않됩니다.

  • Profile
    초보 2001.02.12 23:04
    지나가는.. wrote:

    sql.add('where a_year || a_mnth between :P_year || :P_stmm and

    :P_year1 || :P_tomm');

    parambyname('P_year').asstring := year;

    parambyname('P_year1').asstring := year1;

    parambyname('P_stmm').asstring := stmm;

    parambyname('P_tomm').asstring := tomm;



    하하 님 말씀대로 하니까 잘 됩니다.

    a_year과 작대기 두개 사이를 한칸 뛰어주니까 아주 잘 됩니다. 자주 지나가 주세요.

    근데 조기 작대기 두개는 어떻게 나타내죠?