Q&A

  • Re: 이런게 가능한지...인터베이스
처버자 wrote:

> 전표에

>

> 1일 1건

> 3일 1건

> 3일 1건

> 3일 2건

> 10일 3건

>

> 에 해당되는 데이타가 있습니다.

>

> 위의 것을 select문으로 읽어오면 건수의 합계가 다음과 같이 나오겠죠.

>

> 1일 1건

> 3일 4건

> 10일 3건

>

> 근데 제가 원하는것은

> 없는 일자 즉

>

> 2일, 4일 5일... 에는 0건으로 표시 되어야 한다는 것입니다.

>

> 다시 말씀드리면

>

> 1일 1건

> 2일 0건

> 3일 4건

> 4일 0건

> 5일 0건

> .

> .

> .

> .

> 31일 0건

>

> 이렇게요

>

> 무슨 방법이 없을까요

>

> 사용 db는 인터베이스입니다.



안녕하세요. 까마귀입니다.



간단하게 말해서요. 제일 좋다는 것은 아닙니다.

만일 한 테이블에 날짜 데이터가 들어있다면 쉽게 해결 가능합니다.

Date 라는 테이블이 있고 여기의 day 필드에 1일부터 31일까지 데이터가 있으면 됩니다.

그러면 전표 테이블과 Outer Join을 하면 됩니다.



Select D.Day 날짜, IsNULL(J.건수,0) 건수

From Date D Left Join 전표 J On D.Day = J.날짜



위처럼 하면 해당 날짜에 건수가 있으면 그대로, 없으면 0으로 나옵니다.

근데.. 별로 권하고 싶지는 않네요.

1년의 데이터가 모두 있어야 하니..







위대한 단군혼이 살아있는 나라.... 대한민국.

1  COMMENTS
  • Profile
    처버자 2001.03.23 05:12
    까마귀 wrote:

    > 처버자 wrote:

    > > 전표에

    > >

    > > 1일 1건

    > > 3일 1건

    > > 3일 1건

    > > 3일 2건

    > > 10일 3건

    > >

    > > 에 해당되는 데이타가 있습니다.

    > >

    > > 위의 것을 select문으로 읽어오면 건수의 합계가 다음과 같이 나오겠죠.

    > >

    > > 1일 1건

    > > 3일 4건

    > > 10일 3건

    > >

    > > 근데 제가 원하는것은

    > > 없는 일자 즉

    > >

    > > 2일, 4일 5일... 에는 0건으로 표시 되어야 한다는 것입니다.

    > >

    > > 다시 말씀드리면

    > >

    > > 1일 1건

    > > 2일 0건

    > > 3일 4건

    > > 4일 0건

    > > 5일 0건

    > > .

    > > .

    > > .

    > > .

    > > 31일 0건

    > >

    > > 이렇게요

    > >

    > > 무슨 방법이 없을까요

    > >

    > > 사용 db는 인터베이스입니다.

    >

    > 안녕하세요. 까마귀입니다.

    >

    > 간단하게 말해서요. 제일 좋다는 것은 아닙니다.

    > 만일 한 테이블에 날짜 데이터가 들어있다면 쉽게 해결 가능합니다.

    > Date 라는 테이블이 있고 여기의 day 필드에 1일부터 31일까지 데이터가 있으면 됩니다.

    > 그러면 전표 테이블과 Outer Join을 하면 됩니다.

    >

    > Select D.Day 날짜, IsNULL(J.건수,0) 건수

    > From Date D Left Join 전표 J On D.Day = J.날짜

    >

    > 위처럼 하면 해당 날짜에 건수가 있으면 그대로, 없으면 0으로 나옵니다.

    > 근데.. 별로 권하고 싶지는 않네요.

    > 1년의 데이터가 모두 있어야 하니..

    >

    >

    >

    > 위대한 단군혼이 살아있는 나라.... 대한민국.



    그런데요

    문제는 1일부터 31일까지 데이타가 없다는 것이 문제입니다.



    프로시져로 하면 된다고는 하는데.

    프로시져를 어떻게 만들어야 할지 좀 ....



    우선 제가 만든 프로시저는 다음과 같습니다.

    그런데 이놈이 에라가 나네요.. 흑흑...

    이 에라좀 봐주세요..





    CREATE PROCEDURE MONTH_TOT(

    INRANKGB CHAR(03),

    INCUSTOMCD CHAR(08),

    INCUSTOMNM VARCHAR(30),

    INFDATE CHAR(08),

    INTDATE CHAR(08),

    INDAY INTEGER)

    RETURNS(

    OUTDAY INTEGER,

    OUTCNT INTEGER)

    AS

    DECLARE VARIABLE I INTEGER;

    BEGIN

    FOR

    SELECT

    CAST(MAX(MID(A.ATTYMD,7,2)) AS INTEGER) AS SUMDAY,

    COUNT(A.ATTYMD) AS CNT

    FROM

    FM_ATTEND_T A LEFT JOIN FM_CUSTOM_T B ON A.CUSTOMCD = B.CUSTOMCD

    WHERE

    (B.RANKGB LIKE :INRANKGB) AND

    (A.CUSTOMCD LIKE :INCUSTOMCD) AND

    (B.CUSTOMNM LIKE :INCUSTOMNM) AND

    (A.ATTYMD BETWEEN :INFYMD AND :INTYMD)

    GROUP BY

    A.ATTYMD

    INTO :OUTDAY, :OUTCNT

    DO

    BEGIN

    WHILE (I < :INDAY) DO

    BEGIN

    I = I + 1;

    IF (SUMDAY = '') THEN

    BEGIN

    OUTDAY = I;

    OUTCNT = 0;

    END

    ELSE

    BEGIN

    OUTDAY = :OUTDAY;

    OUTCNT = :OUTCNT;

    END

    END

    SUSPEND;

    END

    END;





    // error 메세지

    // colunm unknown