Q&A

  • DB의 3개행을 DBGrid 한줄로 보여주는 방법좀 할려주세요
(DB의 내용)
---------------------------------
학번      구분     점수
  1         AA       90
  1         BB        80
  1         CC       70
  2         AA       90
  2         BB        80
  2         CC       70
--------------------------------



학번과 구분이 키값입니다.

구분에서 AA는 국어
             BB는 수학
             CC는 영어
라고 치면


델파이에서 DBGrid 같은걸로 이렇게 보여주고 싶거든요

********************************
학번    국어    수학     영어
1         90       80        70
2         90       80        70
*******************************


제가 왕초보거든요..
자세하게 알려주시면 정말 감사하겠습니다. ^^;
2  COMMENTS
  • Profile
    머슴 2002.07.08 19:07
    DB가 오라클이면 다음과 같이 하면 될것 같습니다.

    학번을 그룹핑해서...코드별로 데이타를 찍는 방법입니다.

    <예>

    SELECT 학번,
           DECODE(구분,'AA',점수,NULL) 국어,
           DECODE(구분,'BB',점수,NULL) 영어,
           DECODE(구분,'CC',점수,NULL) 수학
    FROM 테이블명
    GROUP BY 학번

    만약 오라클이 아닌 경우는 DECODE에 해당 하는 함수를 찾아야 할것
    같습니다..(이 방법은 쿼리를 한번으로 해결하기때문에...
    UNION조인이나 다른 방법보다는 속도는 빠를 수 가 있습니다..)


    DECODE는 IF 문과 같은 것인데... 구분 AA이면 점수를 찍고 아니면
    NULL을 찍고 필드명는 국어라 한다는 의미 입니다...






  • Profile
    박준열 2002.07.08 05:38

    어려운 작업 하느라 고심이 많겠슴니다.
    DataBase설계부터 좀 살펴야 할것 같고요,

    이것이 아니리라 생각됩니다.

    예전에 처리한 적이 있어서 방법론만 말씀드리겠슴니다.
    (사실 소스가 없걸랑요)
    맹글어지면 올려주셍

    1. Query를 2회하여야 함니다.

    ==> Query1
      With Query1 Do begin
         close;
         sql.clear;
         sql.add( ' Select 구분 From Table1 Group By 구분 ');
         open;
         First;
        // '구분'을 Column으로 하기 위하여
         S := ' Select T.학번 ';
         For i := 1 To RecordCount Do Begin
              S := S  + ', (Select  ' + FieldValues['구분'] +
                       '  From Table1 where 학번 = T.학번 ) '+FieldValues['구분'] ;
              Next;
         End;   //Column을 구성하기 위하여
         S := S + ' From Table1 T';
         //즉 Query 문자열을 만드는것이지요.
      End;

    ==> Query2
        With Query2 Do Begin
              Close;
              SQL.Clear;
              SQL.add(S);
              Open;
        End;

    이렇게 하시면 기본 골격은 잡으실수 있을 것입니다.
    그러나 이보다 더좋은 방법은 아마도 Server의 Porcedure를 사용하시는것이
    더 유리할 것으로 보입니다.

      ===> 님. 내머리 쥐났어요. <==   책임져용