2번 문장을 1번문장으로 고치려 합니다.
그런데 when젤에서 자꾸 에러가 납니다.
필드를 구성하는 조건을 1가지에서 2가지로 변경하여
하나의 필드를 만들려고 합니다
즉 입고일때만 a1인 필드를 생성하였다면 입고 반입 두가지경우다 a1필드로 만드려 합니다
좋은 아이디어 가지신분 부탁드립니다
//==================================================================================================================================
//= 1 번 문장========================================================================================================
//==================================================================================================================================
With Q_MUSI do begin
Close;
Sql.Clear;
Sql.Add('SELECT B.COMPCODE, B.COMPNAME, B.COMPTEL, B.DAMDANG, B.DAMTEL, B.BASEMISU, B.COMPMISU,'); when token error
Sql.Add('SUM(CASE WHEN ((CHKIO = ''입고'') or (CHKIO = ''반입'')) THEN ISNULL(MSUM,0) END) AS A1,'); <<<<<=========================
Sql.Add('SUM(CASE WHEN ((CHKIO = ''출고'') or (CHKIO = ''반출'')) THEN ISNULL(MSUM,0) END) AS A2,');
Sql.Add('SUM(CASE WHEN (CHKIO = ''입금'') THEN ISNULL(MSUM,0) END) AS AA1,');
Sql.Add('SUM(CASE WHEN (CHKIO = ''출금'') THEN ISNULL(MSUM,0) END) AS AA2');
Sql.Add(' FROM TFLOWMAIN A, TCODCOMP B');
Sql.Add(' WHERE A.DRGST < ''' + DateToStr(DateTimePicker1.Date) + '''');
IF COMBOBOX1.ItemIndex <> 0 THEN
BEGIN
Sql.Add(' And B.GUBUN = ''' + COMBOBOX1.Text +'''');
END;
Sql.Add(' And A.COMPCODE = B.COMPCODE');
Sql.Add(' GROUP BY B.COMPCODE, B.COMPNAME, B.COMPTEL, B.DAMDANG, B.DAMTEL, B.BASEMISU, B.COMPMISU');
Active := True;
end;
//==================================================================================================================================
//== 2 번 문장================================================================================================================================
//==================================================================================================================================
With Q_MUSIS do begin
Close;
Sql.Clear;
Sql.Add('SELECT B.COMPCODE, B.COMPNAME, B.COMPTEL, B.DAMDANG, B.DAMTEL, B.BASEMISU, B.COMPMISU,');
Sql.Add('SUM(CASE WHEN CHKIO = ''입고'' THEN ISNULL(MSUM,0) END) AS A1,');
Sql.Add('SUM(CASE WHEN CHKIO = ''출고'' THEN ISNULL(MSUM,0) END) AS A2,');
Sql.Add('SUM(CASE WHEN CHKIO = ''반입'' THEN ISNULL(MSUM,0) END) AS A3,');
Sql.Add('SUM(CASE WHEN CHKIO = ''반출'' THEN ISNULL(MSUM,0) END) AS A4,');
Sql.Add('SUM(CASE WHEN CHKIO = ''입금'' THEN ISNULL(MSUM,0) END) AS AA1,');
Sql.Add('SUM(CASE WHEN CHKIO = ''출금'' THEN ISNULL(MSUM,0) END) AS AA2');
Sql.Add(' FROM TFLOWMAIN A, TCODCOMP B');
Sql.Add(' WHERE A.DRGST >= ''' + DateToStr(DateTimePicker1.Date) + '''');
Sql.Add(' And A.DRGST <= ''' + DateToStr(DateTimePicker2.Date) + '''');
IF COMBOBOX1.ItemIndex <> 0 THEN
BEGIN
Sql.Add(' And B.GUBUN = ''' + COMBOBOX1.Text +'''');
END;
Sql.Add(' And A.COMPCODE = B.COMPCODE');
Sql.Add(' GROUP BY B.COMPCODE, B.COMPNAME, B.COMPTEL, B.DAMDANG, B.DAMTEL, B.BASEMISU, B.COMPMISU');
Active := True;
end;
제가 아직 소스를 이해를 못 했지만 그래도 문장이 잘못된 거 같아서 이렇게 답변을 올려 드립니다.
먼저 CASE 문장 뒤에 필드명을 적어 주셔야 하는 데 When 에 붙이 셨군요.
그럼 한번 수정을 하면 다음과 같이 하시면 될것같아여..
SQL 문장만 적어 드리도록 하겠습니다.
Sum(CASE CHKIO WHEN '입고' THEN ISNULL(MSUM,0) ELSE
CASE CHKIO WHEN '반입' THEN ISNULL(MSUM,0) END END AS A1)
SUM(CASE WHEN ((CHKIO = ''입고'') or (CHKIO = ''반입'')) THEN ISNULL(MSUM,0) END) AS A1,'); <<<<<=========================
위와 같이 수정을 하시면 될 것 같아요...
나머지 CASE 문장을 전부 이렇게 적어 주시면 될 것 같아요..
글구 좀 더 상세한 내용을 보고 싶으시면 제가 올려놓은 자료를 참고하세여.
사이트는 아래와 같습니다.
http://www.inforpharm.co.kr/support.htm
그럼 즐프하세요..
혹시 안 되시면 제게 멜 주세요...