Q&A

  • 그룹바이 도움요청합니다.
이렇게 코딩을하니 에러는 안나요

근데 제가 알고 싶은건

그룹바이로 금액을 누적했으면 여러그룹에 대한 sum값을 어떻게 받아오나요

그룹은 수입,지출 이렇게 2가지인데요

요코딩대로 한다면 수입에대한 합만나오더군요



고수님들 부탁합니다..









query2.close;

query2.SQL.Clear;

query2.sql.Add('select 구분,sum(금액)as total from gagebu.db');



query2.sql.Add('where 날짜 between :now1 and :now2');

query2.parambyname('now1').asdatetime:=DateTimePicker1.Date;

query2.parambyname('now2').asdatetime:=DateTimePicker3.Date;



if combobox3.text<>'수입,지출' then

begin

query2.sql.Add(' and 구분 like "%' + combobox3.text + '%"');



end;

if combobox4.text <> '' then

begin

query2.SQL.add(' order by ' + combobox4.text+ ' asc ');

end;



query2.SQL.add('group by 구분') ;





query2.open;

edit3.text := query2.fieldbyname('total').asstring;

edit4.text := query2.fieldbyname('total').asstring;

1  COMMENTS
  • Profile
    ClickTest 2001.12.06 18:00
    초보아씨 wrote:

    > 이렇게 코딩을하니 에러는 안나요

    > 근데 제가 알고 싶은건

    > 그룹바이로 금액을 누적했으면 여러그룹에 대한 sum값을 어떻게 받아오나요

    > 그룹은 수입,지출 이렇게 2가지인데요

    > 요코딩대로 한다면 수입에대한 합만나오더군요

    >

    > 고수님들 부탁합니다..

    >

    >

    >

    >

    > query2.close;

    > query2.SQL.Clear;

    > query2.sql.Add('select 구분,sum(금액)as total from gagebu.db');

    >

    > query2.sql.Add('where 날짜 between :now1 and :now2');

    > query2.parambyname('now1').asdatetime:=DateTimePicker1.Date;

    > query2.parambyname('now2').asdatetime:=DateTimePicker3.Date;

    >

    > if combobox3.text<>'수입,지출' then

    > begin

    > query2.sql.Add(' and 구분 like "%' + combobox3.text + '%"');

    >

    > end;

    > if combobox4.text <> '' then

    > begin

    > query2.SQL.add(' order by ' + combobox4.text+ ' asc ');

    > end;

    >

    > query2.SQL.add('group by 구분') ;

    >

    >

    > query2.open;

    > edit3.text := query2.fieldbyname('total').asstring;

    > edit4.text := query2.fieldbyname('total').asstring;



    만약 구분이 딱 2개만 있다 그럼 님의 쿼리 결과는 이렇게 되어 있을 겁니다...

    (물론 콤보박스에서 수입만 선택하면 수입만 나오겠죠...)



    수입 10000000

    지출 9000000



    위의 코딩은 무조건 첫번째 데이터만 불러 오죠...



    while not query2.Eof do

    begin

    if Query2.FieldByName('구분').AsString = '수입' then

    Edit1.Text := FloatToStr(Query2.FieldByName('total').AsFloat) // 수입합계

    else if Query2.FieldByName('구분').AsString = '지출' then

    Edit2.Text := FloatToStr(Query2.FieldByName('total').AsFloat); // 지출합계



    Query2.Next;

    end;



    for 문을 이용하실 수도 있습니다...