Q&A

  • sql에서 if문을 사용할수 없나여(급구)
만약에

생일이 음,양으로 나누어 있느네



그것을 조건에 맞게 할려

select aaa //가지고올 필드

from table

where if bbb=1 then

begin

aaa >= '20000101' and aaa <= '20001201'

end

if bbb=2 then

aaa >= '19990101' and aaa <= '19991201'





이런식으로는 못 쓰나여

알고 계신분을 답변좀해 주세여



참고로 디비는 sql server7.0입니다



불가능 하면 불가능 하다고 답변이라도 부탁 합니다.





그럼~~~~`

즐 코딩하세여



4  COMMENTS
  • Profile
    조덕진 2000.11.07 02:44
    뻐럭이 wrote:

    > 만약에

    > 생일이 음,양으로 나누어 있느네

    >

    > 그것을 조건에 맞게 할려

    > select aaa //가지고올 필드

    > from table

    > where if bbb=1 then

    > begin

    > aaa >= '20000101' and aaa <= '20001201'

    > end

    > if bbb=2 then

    > aaa >= '19990101' and aaa <= '19991201'

    >

    >

    > 이런식으로는 못 쓰나여

    > 알고 계신분을 답변좀해 주세여

    >

    > 참고로 디비는 sql server7.0입니다

    >

    > 불가능 하면 불가능 하다고 답변이라도 부탁 합니다.

    >

    >

    > 그럼~~~~`

    > 즐 코딩하세여

    >



    안녕하세요. 배스매니아 조덕진입니다. 제가 초보라 도움이 될지 모르겠네요.

    아래에도 답변이 있지만, 파라미터를 이용하는 방법을 알려드리죠.

    > select aaa //가지고올 필드

    > from table

    > where if bbb=1 then

    > begin

    > aaa >= '20000101' and aaa <= '20001201'

    > end

    > if bbb=2 then

    > aaa >= '19990101' and aaa <= '19991201'





    위의 코딩을 파라미터 쿼리로 변경해 보았습니다.



    case bbb of

    1 : begin

    date1 : '20000101'

    date2 : '20001201'

    end;

    2 : begin

    date1 : '19990101'

    date2 : '19991201'

    end;

    end;



    with Query1 do

    begin

    Close;

    SQL.Clear();

    SQL.Add('select aaa from table1');

    SQL.Add(' where aaa >= :param2 and aaa <= :parma3'); <------ 참고

    ParamByName('parma2').AsString := date1;

    ParamByName('parma3').AsString := date2;

    Open;

    end;



    원하시는 내용인지 모르겠네요.



    그럼..



    ** 참고 : 이 부분은 bettwen을 사용하셔도 무관합니다.

  • Profile
    하늘맥 2000.11.06 23:42
    <참고>

    ms Sql에는 case ~ when 을 사용할수 있다고 하네여..

    MS SQL 책을 보면 있을 것예요....





    뻐럭이 wrote:

    > 만약에

    > 생일이 음,양으로 나누어 있느네

    >

    > 그것을 조건에 맞게 할려

    > select aaa //가지고올 필드

    > from table

    > where if bbb=1 then

    > begin

    > aaa >= '20000101' and aaa <= '20001201'

    > end

    > if bbb=2 then

    > aaa >= '19990101' and aaa <= '19991201'

    >

    >

    > 이런식으로는 못 쓰나여

    > 알고 계신분을 답변좀해 주세여

    >

    > 참고로 디비는 sql server7.0입니다

    >

    > 불가능 하면 불가능 하다고 답변이라도 부탁 합니다.

    >

    >

    > 그럼~~~~`

    > 즐 코딩하세여

    >

  • Profile
    뻐럭이 2000.11.07 01:40
    님아 답변 감사한데여

    그것두 안되여

    셀렉트에 쓰는거더라구여

    where 안에 쓰는게 아니고

    어째든 답변 감사







    하늘맥 wrote:

    > <참고>

    > ms Sql에는 case ~ when 을 사용할수 있다고 하네여..

    > MS SQL 책을 보면 있을 것예요....

    >

    >

    > 뻐럭이 wrote:

    > > 만약에

    > > 생일이 음,양으로 나누어 있느네

    > >

    > > 그것을 조건에 맞게 할려

    > > select aaa //가지고올 필드

    > > from table

    > > where if bbb=1 then

    > > begin

    > > aaa >= '20000101' and aaa <= '20001201'

    > > end

    > > if bbb=2 then

    > > aaa >= '19990101' and aaa <= '19991201'

    > >

    > >

    > > 이런식으로는 못 쓰나여

    > > 알고 계신분을 답변좀해 주세여

    > >

    > > 참고로 디비는 sql server7.0입니다

    > >

    > > 불가능 하면 불가능 하다고 답변이라도 부탁 합니다.

    > >

    > >

    > > 그럼~~~~`

    > > 즐 코딩하세여











    > >

  • Profile
    coolling 2000.11.07 01:59
    Query 컴포넌트를 사용하시겠죠...





    with Query1 do beign

    Close;

    Sql.clear;

    Sql.Add('select aaa'); //가지고올 필드

    Sql.Add(' from table');

    if bbb=1 then

    Sql.Add(' where aaa >= ''20000101'' and aaa <= ''20001201''')

    else if bbb=2 then

    Sql.Add(' where aaa >= ''19990101'' and aaa <= ''19991201''');



    이정도.. 물론 bbb는 변수이어야 되겠죠....!!

    아님.... stored procedure를 사용하시던가.... 오라클에도 있으나까 MS_SQL에도

    있을꺼예요.. 아마도?????



    도움이 되었는지.~~~