Q&A

  • sql 에러 도와주세요
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;
1  COMMENTS
  • Profile
    major 2002.04.13 01:42
    안녕하세여..
    제가 아직 소스를 이해를 못 했지만 그래도 문장이 잘못된 거 같아서 이렇게 답변을 올려 드립니다.
    먼저 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
    그럼 즐프하세요..
    혹시 안 되시면 제게 멜 주세요...