Q&A

  • select한 데이타를 화면에 보여줄 때...


sql을 실행시키고 나면 데이타가



'1회, 담당자, 건수, 금액' 이런 형태로 나옵니다.



아래와 같이 화면에 보여 줄려면 어떻게 해야 하는지요?



1회 2회 3회 4회 5회 ....

건수 금액 건수 금액 건수 금액 건수 금액 건수 금액

담당자

.

.

.



4  COMMENTS
  • Profile
    Hub 2000.11.26 02:15
    황선희 wrote:

    >

    > sql을 실행시키고 나면 데이타가

    >

    > '1회, 담당자, 건수, 금액' 이런 형태로 나옵니다.

    >

    > 아래와 같이 화면에 보여 줄려면 어떻게 해야 하는지요?

    >

    > 1회 2회 3회 4회 5회 ....

    > 건수 금액 건수 금액 건수 금액 건수 금액 건수 금액

    > 담당자

    > .

    > .

    > .

    >



    <답변>

    서브쿼리와 오라클일경우 Decode를 아니면 MS SQL 일경우 Case를 사용하면

    됩니다.

    자세한것은 현 쿼리문과 DB 종류를 알려주시면 답변해드리겠습니다.

  • Profile
    황선희 2000.11.27 17:59
    Hub wrote:

    > 황선희 wrote:

    > >

    > > sql을 실행시키고 나면 데이타가

    > >

    > > '1회, 담당자, 건수, 금액' 이런 형태로 나옵니다.

    > >

    > > 아래와 같이 화면에 보여 줄려면 어떻게 해야 하는지요?

    > >

    > > 1회 2회 3회 4회 5회 ....

    > > 건수 금액 건수 금액 건수 금액 건수 금액 건수 금액

    > > 담당자

    > > .

    > > .

    > > .

    > >

    >

    > <답변>

    > 서브쿼리와 오라클일경우 Decode를 아니면 MS SQL 일경우 Case를 사용하면

    > 됩니다.

    > 자세한것은 현 쿼리문과 DB 종류를 알려주시면 답변해드리겠습니다.



    DB는 인포믹스를 사용하고 있습니다.



    쿼리문은 아래와 같구요.



    ' select count(*) cnt, sum(a.sum_unpaid) sum_unpaid, '+

    ' (select name_sales from ss010m '+

    ' where no_cust = a.no_cust) name_sales, '+

    ' a.ym_elast, a.ym_slast '+

    ' from sr120m a '+

    ' where a.ym_requ = "2000-11-01" '+

    ' and a.sum_unpaid <> 0 '+

    ' group by 3,4,5 '+

    ' union all '+

    ' select count(*) cnt, sum(a.sum_unpaid) sum_unpaid, '+

    ' (select name_sales from ss010m '+

    ' where no_cust = a.no_cust) name_sales, '+

    ' a.ym_elast, a.ym_slast '+

    ' from sr140m a '+

    ' where a.ym_requ = "2000-11-01" '+

    ' and a.sum_unpaid <> 0 '+

    ' group by 3,4,5 '+

    ' order by 4,3 ';



    CalcFields에서 필드를 하나 추가한 후 ym_elast(종료월)- ym_slast(시작월)로 차수(1회,2회,...)를 구해서 사용하고 있습니다.



    DBGrid로는 힘들 거 같아, StringGrid를 사용할려고 하는데, 그것도 쉽지가 않아서요.



    도움 말씀 부탁드립니다.



  • Profile
    Hub 2000.11.27 19:22
    > DB는 인포믹스를 사용하고 있습니다.

    >

    > 쿼리문은 아래와 같구요.

    >

    > ' select count(*) cnt, sum(a.sum_unpaid) sum_unpaid, '+

    > ' (select name_sales from ss010m '+

    > ' where no_cust = a.no_cust) name_sales, '+

    > ' a.ym_elast, a.ym_slast '+

    > ' from sr120m a '+

    > ' where a.ym_requ = "2000-11-01" '+

    > ' and a.sum_unpaid <> 0 '+

    > ' group by 3,4,5 '+

    > ' union all '+

    > ' select count(*) cnt, sum(a.sum_unpaid) sum_unpaid, '+

    > ' (select name_sales from ss010m '+

    > ' where no_cust = a.no_cust) name_sales, '+

    > ' a.ym_elast, a.ym_slast '+

    > ' from sr140m a '+

    > ' where a.ym_requ = "2000-11-01" '+

    > ' and a.sum_unpaid <> 0 '+

    > ' group by 3,4,5 '+

    > ' order by 4,3 ';

    >

    > CalcFields에서 필드를 하나 추가한 후 ym_elast(종료월)- ym_slast(시작월)로 차수(1회,2회,...)를 구해서 사용하고 있습니다.

    >

    > DBGrid로는 힘들 거 같아, StringGrid를 사용할려고 하는데, 그것도 쉽지가 않아서요.

    >

    > 도움 말씀 부탁드립니다.

    >



    죄송합니다.

    제가 시간이 없어 자세히 살펴보지는 못했어요

    급하게 답변을 올립니다.

    우선 제가 전에 했던 차종별로 계산하는 쿼리문을 보시고 참고하세요



    select tr_hh,MAX(c1),MAX(c6),MAX(c2),MAX(c3),MAX(c4),MAX(c5),MAX(etc)

    from (

    SELECT ic_code,tr_hh,car_kind,

    DECODE(CAR_KIND,'1',SUM(NR_PASS),0) c1,

    DECODE(CAR_KIND,'6',SUM(NR_PASS),0) c6,

    DECODE(CAR_KIND,'2',SUM(NR_PASS),0) c2,

    DECODE(CAR_KIND,'3',SUM(NR_PASS),0) c3,

    DECODE(CAR_KIND,'4',SUM(NR_PASS),0) c4,

    DECODE(CAR_KIND,'5',SUM(NR_PASS),0) c5,

    SUM(FR_PASS+ES_PASS+FR_CARD) etc

    FROM ts40hhh

    WHERE tr_DATE BETWEEN '19990201' AND '19990204'

    AND IC_CODE='101'

    AND IO_GUBUN='0'

    GROUP BY ic_code,tr_hh,car_kind

    ) a

    group by tr_hh



    Select 절에 기술된 것이 Title이 된다는 것을 염두해 두시면...

    될것같은데

    답변이 시원치 않아 죄송합니다.

    이크 또 불려가야 합니다. 죄송....



  • Profile
    황선희 2000.11.27 20:00
    Hub wrote:

    > > DB는 인포믹스를 사용하고 있습니다.

    > >

    > > 쿼리문은 아래와 같구요.

    > >

    > > ' select count(*) cnt, sum(a.sum_unpaid) sum_unpaid, '+

    > > ' (select name_sales from ss010m '+

    > > ' where no_cust = a.no_cust) name_sales, '+

    > > ' a.ym_elast, a.ym_slast '+

    > > ' from sr120m a '+

    > > ' where a.ym_requ = "2000-11-01" '+

    > > ' and a.sum_unpaid <> 0 '+

    > > ' group by 3,4,5 '+

    > > ' union all '+

    > > ' select count(*) cnt, sum(a.sum_unpaid) sum_unpaid, '+

    > > ' (select name_sales from ss010m '+

    > > ' where no_cust = a.no_cust) name_sales, '+

    > > ' a.ym_elast, a.ym_slast '+

    > > ' from sr140m a '+

    > > ' where a.ym_requ = "2000-11-01" '+

    > > ' and a.sum_unpaid <> 0 '+

    > > ' group by 3,4,5 '+

    > > ' order by 4,3 ';

    > >

    > > CalcFields에서 필드를 하나 추가한 후 ym_elast(종료월)- ym_slast(시작월)로 차수(1회,2회,...)를 구해서 사용하고 있습니다.

    > >

    > > DBGrid로는 힘들 거 같아, StringGrid를 사용할려고 하는데, 그것도 쉽지가 않아서요.

    > >

    > > 도움 말씀 부탁드립니다.

    > >

    >

    > 죄송합니다.

    > 제가 시간이 없어 자세히 살펴보지는 못했어요

    > 급하게 답변을 올립니다.

    > 우선 제가 전에 했던 차종별로 계산하는 쿼리문을 보시고 참고하세요

    >

    > select tr_hh,MAX(c1),MAX(c6),MAX(c2),MAX(c3),MAX(c4),MAX(c5),MAX(etc)

    > from (

    > SELECT ic_code,tr_hh,car_kind,

    > DECODE(CAR_KIND,'1',SUM(NR_PASS),0) c1,

    > DECODE(CAR_KIND,'6',SUM(NR_PASS),0) c6,

    > DECODE(CAR_KIND,'2',SUM(NR_PASS),0) c2,

    > DECODE(CAR_KIND,'3',SUM(NR_PASS),0) c3,

    > DECODE(CAR_KIND,'4',SUM(NR_PASS),0) c4,

    > DECODE(CAR_KIND,'5',SUM(NR_PASS),0) c5,

    > SUM(FR_PASS+ES_PASS+FR_CARD) etc

    > FROM ts40hhh

    > WHERE tr_DATE BETWEEN '19990201' AND '19990204'

    > AND IC_CODE='101'

    > AND IO_GUBUN='0'

    > GROUP BY ic_code,tr_hh,car_kind

    > ) a

    > group by tr_hh

    >

    > Select 절에 기술된 것이 Title이 된다는 것을 염두해 두시면...

    > 될것같은데

    > 답변이 시원치 않아 죄송합니다.

    > 이크 또 불려가야 합니다. 죄송....

    >



    답변 감사합니다.

    그런데, from ( 에서 syntax error 발생하는 바람에 진행이 안되는군요.

    아마도 인포믹스가 지원을 못해주는 거 같습니다.

    그리고, 인포믹스에서는 decode가 안된다고 하시는데....

    다른 방법은 없을까요?