Q&A

  • 반복되는 레코드 내용이 컬럼으로 배열되는 쿼리가 가능하까요?
오라클 8i임돠....

예제 테이블이 있고 이 테이블 구조는 다른테이블에서도 연결해 쓰기땀시 필드구조는

이케 해야한다고 하네용...

그런디...



날짜 나라코드 환율

2000/01/01 JP 100

2000/01/01 CN 140

2000/01/01 US 1200

2000/01/02 JP 100

2000/01/02 CN 130

2000/01/02 US 1190

.

.

.

이렇게 나라코드별루 환율이 쫘악...반복적으로 리스트가 되는데...

이넘을 인쇄하거나 보기 좋게 보여주기위해 DBGrid를 이용하려고합니다.....



제가 해보고 싶은거이.... =.=



2000/01/01 US 1200 CN 140 JP 100

2000/01/02 US 1190 CN 130 JP 100

.

.

.

이렇게 나오게 하는거이 가능하까요? ... 그거참...

하하..



또 동적으로 테이블 생성해가지고 해야하남..?

이걸 자빠뜨린다고 하는디...



음...가능이나 한지요...

오라클이면 뭔가 꽁수가 있을법도 한디...











7  COMMENTS
  • Profile
    jueui 2000.11.22 22:01
    나라코드를 알고있는 경우는 가능합니다

    그러나 나라코드를 알고 있다하여도 갯수가 많을경우는 문제가있읍니다 (대체로 20 개 이상이면)





    1. TEST TABLE



    BDATE BNAME BMON

    20000101 JP 100

    20000101 CN 140

    20000101 US 1200

    20000102 JP 100

    20000102 CN 130

    20000102 US 1190



    2. TEST SQL



    SELECT

    MASTER.BDATE AS 일자,

    MAX(JP.BMON) AS JP환율,

    MAX(CN.BMON) AS CN환율,

    MAX(US.BMON) AS US환율

    FROM PSD_TEMP MASTER,

    PSD_TEMP JP,

    PSD_TEMP CN,

    PSD_TEMP US

    WHERE MASTER.BDATE = JP.BDATE(+) AND

    JP.BNAME = 'JP' AND

    MASTER.BDATE = CN.BDATE(+) AND

    CN.BNAME = 'CN' AND

    MASTER.BDATE = US.BDATE(+) AND

    US.BNAME = 'US'

    GROUP BY MASTER.BDATE



    3. 결과

    일자 JP환율 CN환율 US환율

    20000101 100 140 1200

    20000102 100 130 1190



    답변이되었나요 ..



    즐푸 하시길 ...











    황광일 wrote:

    > 오라클 8i임돠....

    > 예제 테이블이 있고 이 테이블 구조는 다른테이블에서도 연결해 쓰기땀시 필드구조는

    > 이케 해야한다고 하네용...

    > 그런디...

    >

    > 날짜 나라코드 환율

    > 2000/01/01 JP 100

    > 2000/01/01 CN 140

    > 2000/01/01 US 1200

    > 2000/01/02 JP 100

    > 2000/01/02 CN 130

    > 2000/01/02 US 1190

    > .

    > .

    > .

    > 이렇게 나라코드별루 환율이 쫘악...반복적으로 리스트가 되는데...

    > 이넘을 인쇄하거나 보기 좋게 보여주기위해 DBGrid를 이용하려고합니다.....

    >

    > 제가 해보고 싶은거이.... =.=

    >

    > 2000/01/01 US 1200 CN 140 JP 100

    > 2000/01/02 US 1190 CN 130 JP 100

    > .

    > .

    > .

    > 이렇게 나오게 하는거이 가능하까요? ... 그거참...

    > 하하..

    >

    > 또 동적으로 테이블 생성해가지고 해야하남..?

    > 이걸 자빠뜨린다고 하는디...

    >

    > 음...가능이나 한지요...

    > 오라클이면 뭔가 꽁수가 있을법도 한디...

    >

    >

    >

    >

    >

  • Profile
    황광일 2000.11.23 03:53
    이게 SqlPlus에서는 결과가 잘나오더군요... 신나게 시리...

    근데 이걸 DBExplorer에서 하면 안되더군요...

    에러내용이 무슨 캐릭터코드를 인식못하겠다는 거더군요...

    음... 그래서 드라이버를 Odbc로 바꿔봤더니 잘되네요...

    델파이 엔진에서 제공하는 오라클 드라이버가 무슨 문제가 있는거 같아요..

    예전에는 ODBC드라이버가 느리고 BDE하고 안맞는거 같아서 안썼는데 말이져..



    오라클 8i에 생겼다고 들었는데..

    JP.BDATE(+) <= 요기서 '+'는 무슨 의미인가요?

    예전에 SQL Server만 써서 그것만 믿고 하다보니 '+'같은 연산자는 첨보네요..

    뭔 책을 봐야 이런거이 설명이 나온당가요....



    아무튼 해결하게
  • Profile
    jueui 2000.11.23 20:24
    SQL Server 에서의



    SELECT

    MASTER.BDATE AS BDATE,

    MAX(JP.BMON) AS JP,

    MAX(CN.BMON) AS CN,

    MAX(US.BMON) AS US

    FROM PSD_TEMP MASTER,

    PSD_TEMP JP,

    PSD_TEMP CN,

    PSD_TEMP US

    WHERE MASTER.BDATE *= JP.BDATE AND

    JP.BNAME = 'JP' AND

    MASTER.BDATE *= CN.BDATE AND

    CN.BNAME = 'CN' AND

    MASTER.BDATE *= US.BDATE AND

    US.BNAME = 'US'

    GROUP BY MASTER.BDATE



    와 동일함 SQL 입니다

    즉 LEFT JOIN 을 수행 하는 것이지요



    그런데 TABLE 에서



    BDATE BNAME BMON

    20000102 US 1190



    의 내용이 지워졌다고 가정한다 면 아래의 출력 결과가 나와야 할겁니다



    일자 JP환율 CN환율 US환율

    -------- ------- ------- -------

    20000101 100 140 1200

    20000102 100 130 NULL



    제가 TEST 해본바로는 MS SQL 은 의도한대로의 정상적인 위의 결과를 얻을수 있었읍니다



    그런데 ORACLE 의 경우는

    BDATE JP CN US

    -------- ---------- ---------- ----------

    20000101 100 200 300



    이렇게 출력 이되는군요 이유는 저도 잘모르겠읍니다

    제가의도한 바는 MS SQL 과 동일한 결과를 기대하고

    JP.BDATE(+) 를 써서 OUTER JOIN 를 사용한것인데

    의도한 대로 결과값이 얻어지지를 않네요 (죄송)



    제가좀더 TEST 해보고 이유를 알면 알려 드리겠읍니다



    혹시 님 께서 저보다 먼저 원인을 알면 저도좀 알려 주십시요









    황광일 wrote:

    > 이게 SqlPlus에서는 결과가 잘나오더군요... 신나게 시리...

    > 근데 이걸 DBExplorer에서 하면 안되더군요...

    > 에러내용이 무슨 캐릭터코드를 인식못하겠다는 거더군요...

    > 음... 그래서 드라이버를 Odbc로 바꿔봤더니 잘되네요...

    > 델파이 엔진에서 제공하는 오라클 드라이버가 무슨 문제가 있는거 같아요..

    > 예전에는 ODBC드라이버가 느리고 BDE하고 안맞는거 같아서 안썼는데 말이져..

    >

    > 오라클 8i에 생겼다고 들었는데..

    > JP.BDATE(+) <= 요기서 '+'는 무슨 의미인가요?

    > 예전에 SQL Server만 써서 그것만 믿고 하다보니 '+'같은 연산자는 첨보네요..

    > 뭔 책을 봐야 이런거이 설명이 나온당가요....

    >

    > 아무튼 해결하게
  • Profile
    황광일 2000.11.22 22:48
    엄...



    성의있는 답변 감사합니다....

    함 해볼랍니당...



    엄..뭔가 희망이 보이는군요....하하





    jueui wrote:

    > 나라코드를 알고있는 경우는 가능합니다

    > 그러나 나라코드를 알고 있다하여도 갯수가 많을경우는 문제가있읍니다 (대체로 20 개 이상이면)

    >

    >

    > 1. TEST TABLE

    >

    > BDATE BNAME BMON

    > 20000101 JP 100

    > 20000101 CN 140

    > 20000101 US 1200

    > 20000102 JP 100

    > 20000102 CN 130

    > 20000102 US 1190

    >

    > 2. TEST SQL

    >

    > SELECT

    > MASTER.BDATE AS 일자,

    > MAX(JP.BMON) AS JP환율,

    > MAX(CN.BMON) AS CN환율,

    > MAX(US.BMON) AS US환율

    > FROM PSD_TEMP MASTER,

    > PSD_TEMP JP,

    > PSD_TEMP CN,

    > PSD_TEMP US

    > WHERE MASTER.BDATE = JP.BDATE(+) AND

    > JP.BNAME = 'JP' AND

    > MASTER.BDATE = CN.BDATE(+) AND

    > CN.BNAME = 'CN' AND

    > MASTER.BDATE = US.BDATE(+) AND

    > US.BNAME = 'US'

    > GROUP BY MASTER.BDATE

    >

    > 3. 결과

    > 일자 JP환율 CN환율 US환율

    > 20000101 100 140 1200

    > 20000102 100 130 1190

    >

    > 답변이되었나요 ..

    >

    > 즐푸 하시길 ...

    >

    >

    >

    >

    >

    > 황광일 wrote:

    > > 오라클 8i임돠....

    > > 예제 테이블이 있고 이 테이블 구조는 다른테이블에서도 연결해 쓰기땀시 필드구조는

    > > 이케 해야한다고 하네용...

    > > 그런디...

    > >

    > > 날짜 나라코드 환율

    > > 2000/01/01 JP 100

    > > 2000/01/01 CN 140

    > > 2000/01/01 US 1200

    > > 2000/01/02 JP 100

    > > 2000/01/02 CN 130

    > > 2000/01/02 US 1190

    > > .

    > > .

    > > .

    > > 이렇게 나라코드별루 환율이 쫘악...반복적으로 리스트가 되는데...

    > > 이넘을 인쇄하거나 보기 좋게 보여주기위해 DBGrid를 이용하려고합니다.....

    > >

    > > 제가 해보고 싶은거이.... =.=

    > >

    > > 2000/01/01 US 1200 CN 140 JP 100

    > > 2000/01/02 US 1190 CN 130 JP 100

    > > .

    > > .

    > > .

    > > 이렇게 나오게 하는거이 가능하까요? ... 그거참...

    > > 하하..

    > >

    > > 또 동적으로 테이블 생성해가지고 해야하남..?

    > > 이걸 자빠뜨린다고 하는디...

    > >

    > > 음...가능이나 한지요...

    > > 오라클이면 뭔가 꽁수가 있을법도 한디...

    > >

    > >

    > >

    > >

    > >

  • Profile
    방경주 2000.11.22 17:58
    가능 할껍니다...님의 생각대루 오라클에서 지원하져...^^



    Group By 함수를 이용해 보세여...



    예제는 찾아보시면 마니 있습니당....



    구럼 즐프 하셈~



    황광일 wrote:

    > 오라클 8i임돠....

    > 예제 테이블이 있고 이 테이블 구조는 다른테이블에서도 연결해 쓰기땀시 필드구조는

    > 이케 해야한다고 하네용...

    > 그런디...

    >

    > 날짜 나라코드 환율

    > 2000/01/01 JP 100

    > 2000/01/01 CN 140

    > 2000/01/01 US 1200

    > 2000/01/02 JP 100

    > 2000/01/02 CN 130

    > 2000/01/02 US 1190

    > .

    > .

    > .

    > 이렇게 나라코드별루 환율이 쫘악...반복적으로 리스트가 되는데...

    > 이넘을 인쇄하거나 보기 좋게 보여주기위해 DBGrid를 이용하려고합니다.....

    >

    > 제가 해보고 싶은거이.... =.=

    >

    > 2000/01/01 US 1200 CN 140 JP 100

    > 2000/01/02 US 1190 CN 130 JP 100

    > .

    > .

    > .

    > 이렇게 나오게 하는거이 가능하까요? ... 그거참...

    > 하하..

    >

    > 또 동적으로 테이블 생성해가지고 해야하남..?

    > 이걸 자빠뜨린다고 하는디...

    >

    > 음...가능이나 한지요...

    > 오라클이면 뭔가 꽁수가 있을법도 한디...

    >

    >

    >

    >

    >

  • Profile
    황광일 2000.11.22 19:19
    그룹바이 역시 각각의 레코드를 컬럼으로 할 수 없죠...

    개념자체가 그거가 아닌거루 생각하고 있는디... 쭈압=.=

    그룹바이를 못써서 그런건 아니구요...

    진작 이케 해보고 저케 해보고 질문드린 거였는데...

    실망이당...^^



    날짜를 중심으로 그룹으로 묶어봤자 세로로 배열되지 가로로 배열되지는 않자나요...





    진정 이 퀴즈를 풀어줄 사람이 없단말인가요..?



    머 안되면 스트링그리드에 집어넣어야겄져...

    어이구 팔자야..







    방경주 wrote:

    > 가능 할껍니다...님의 생각대루 오라클에서 지원하져...^^

    >

    > Group By 함수를 이용해 보세여...

    >

    > 예제는 찾아보시면 마니 있습니당....

    >

    > 구럼 즐프 하셈~

    >

    > 황광일 wrote:

    > > 오라클 8i임돠....

    > > 예제 테이블이 있고 이 테이블 구조는 다른테이블에서도 연결해 쓰기땀시 필드구조는

    > > 이케 해야한다고 하네용...

    > > 그런디...

    > >

    > > 날짜 나라코드 환율

    > > 2000/01/01 JP 100

    > > 2000/01/01 CN 140

    > > 2000/01/01 US 1200

    > > 2000/01/02 JP 100

    > > 2000/01/02 CN 130

    > > 2000/01/02 US 1190

    > > .

    > > .

    > > .

    > > 이렇게 나라코드별루 환율이 쫘악...반복적으로 리스트가 되는데...

    > > 이넘을 인쇄하거나 보기 좋게 보여주기위해 DBGrid를 이용하려고합니다.....

    > >

    > > 제가 해보고 싶은거이.... =.=

    > >

    > > 2000/01/01 US 1200 CN 140 JP 100

    > > 2000/01/02 US 1190 CN 130 JP 100

    > > .

    > > .

    > > .

    > > 이렇게 나오게 하는거이 가능하까요? ... 그거참...

    > > 하하..

    > >

    > > 또 동적으로 테이블 생성해가지고 해야하남..?

    > > 이걸 자빠뜨린다고 하는디...

    > >

    > > 음...가능이나 한지요...

    > > 오라클이면 뭔가 꽁수가 있을법도 한디...

    > >

    > >

    > >

    > >

    > >

  • Profile
    한하눌 2000.11.22 20:12
    우선이런경우 환율코드(US, YEN)등의 갯수가 정해져 있다고 보면

    SELECT 날짜,

    SUM(DECODE(나라코드,'US',환율)) AS COL1,

    :

    SUM(DECODE(나라코드,'DM',환율)) AS COLn

    FROM 환율테이블

    GROUP BY 날짜

    ..

    비슷하게 나오지 않으려나...

    즐코하시길....





    황광일 wrote:

    > 그룹바이 역시 각각의 레코드를 컬럼으로 할 수 없죠...

    > 개념자체가 그거가 아닌거루 생각하고 있는디... 쭈압=.=

    > 그룹바이를 못써서 그런건 아니구요...

    > 진작 이케 해보고 저케 해보고 질문드린 거였는데...

    > 실망이당...^^

    >

    > 날짜를 중심으로 그룹으로 묶어봤자 세로로 배열되지 가로로 배열되지는 않자나요...

    >

    >

    > 진정 이 퀴즈를 풀어줄 사람이 없단말인가요..?

    >

    > 머 안되면 스트링그리드에 집어넣어야겄져...

    > 어이구 팔자야..

    >

    >

    >

    > 방경주 wrote:

    > > 가능 할껍니다...님의 생각대루 오라클에서 지원하져...^^

    > >

    > > Group By 함수를 이용해 보세여...

    > >

    > > 예제는 찾아보시면 마니 있습니당....

    > >

    > > 구럼 즐프 하셈~

    > >

    > > 황광일 wrote:

    > > > 오라클 8i임돠....

    > > > 예제 테이블이 있고 이 테이블 구조는 다른테이블에서도 연결해 쓰기땀시 필드구조는

    > > > 이케 해야한다고 하네용...

    > > > 그런디...

    > > >

    > > > 날짜 나라코드 환율

    > > > 2000/01/01 JP 100

    > > > 2000/01/01 CN 140

    > > > 2000/01/01 US 1200

    > > > 2000/01/02 JP 100

    > > > 2000/01/02 CN 130

    > > > 2000/01/02 US 1190

    > > > .

    > > > .

    > > > .

    > > > 이렇게 나라코드별루 환율이 쫘악...반복적으로 리스트가 되는데...

    > > > 이넘을 인쇄하거나 보기 좋게 보여주기위해 DBGrid를 이용하려고합니다.....

    > > >

    > > > 제가 해보고 싶은거이.... =.=

    > > >

    > > > 2000/01/01 US 1200 CN 140 JP 100

    > > > 2000/01/02 US 1190 CN 130 JP 100

    > > > .

    > > > .

    > > > .

    > > > 이렇게 나오게 하는거이 가능하까요? ... 그거참...

    > > > 하하..

    > > >

    > > > 또 동적으로 테이블 생성해가지고 해야하남..?

    > > > 이걸 자빠뜨린다고 하는디...

    > > >

    > > > 음...가능이나 한지요...

    > > > 오라클이면 뭔가 꽁수가 있을법도 한디...

    > > >

    > > >

    > > >

    > > >

    > > >