Q&A

  • 쿼리문에 대가를 찾습니다..
자료가 아주 많기 때문에 테이블 말구 꼭 쿼리를 써야합니다..

테이블에 필드0, 필드1, 필드2, 필드3, 필드4가 있을때

필드0의 KEY구요,

필드1은 Group by를 해야하는 필드구요

필드2는 항목이 aa, bb, cc ,dd 이렇게 네가지만 가질수 있는 필드구요

필드3은 Boolean값을 가지구 있는 필드 입니다.

필드4는 Money값을 가지구 있습니다..



이필드들의 값을 이용해서 이런 표를 만들어야하거든요..



필드0으로 검색을 한담에 그 자료로..



┏------------------필2------------------┓

| | aa | bb | cc | dd || 합계

| |cnt | sum |cnt | sum |cnt | sum |cnt | sum ||cnt | sum |

==================================================================================

|필3true |cnt 필4sum |cnt 필4sum |cnt 필4sum |cnt 필4sum ||cnt 필4sum|

필1a|필3false|cnt 필4sum |cnt 필4sum |cnt 필4sum |cnt 필4sum ||cnt 필4sum|

|필3 계 |cnt 필4sum |cnt 필4sum |cnt 필4sum |cnt 필4sum ||cnt 필4sum|

-------------------------------------------------------------------------------- |필3true |cnt 필4sum |cnt 필4sum |cnt 필4sum |cnt 필4sum ||cnt 필4sum|

필1b|필3false|cnt 필4sum |cnt 필4sum |cnt 필4sum |cnt 필4sum ||cnt 필4sum|

|필3 계 |cnt 필4sum |cnt 필4sum |cnt 필4sum |cnt 필4sum ||cnt 필4sum|

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

|필3true |cnt 필4sum |cnt 필4sum |cnt 필4sum |cnt 필4sum ||cnt 필4sum|

필1c|필3false|cnt 필4sum |cnt 필4sum |cnt 필4sum |cnt 필4sum ||cnt 필4sum|

|필3 계 |cnt 필4sum |cnt 필4sum |cnt 필4sum |cnt 필4sum ||cnt 필4sum|

============================================================================= |필3true |cnt 필4sum |cnt 필4sum |cnt 필4sum |cnt 필4sum ||cnt 필4sum|

합계|필3false|cnt 필4sum |cnt 필4sum |cnt 필4sum |cnt 필4sum ||cnt 필4sum|

|필3 계 |cnt 필4sum |cnt 필4sum |cnt 필4sum |cnt 필4sum ||cnt 필4sum|



이해가 잘 되실련지 잘모르겠네요..

흠...그러니깐 필드1로 그룹핑을 해야하구요...필드2의 값은 aa,bb,cc,dd네가지밖에 없는데

그걸 또 필드 3의 Boolean값으로 나눠서 true인거 false인거 에 필드4의 값을 합하구,

음...보시면 아시겠지만..결국 필드4의 값의 통계를 내는것입니다..

이거의 쿼리문을 어떻게 써야할지 정말 모르겠습니다..도움좀 주세요..네?네?

제발요...

지금 제가 저것땜에 고민하느냐구. 암것두 못하구 있습니다..

그리고 중요한건 저대로 출력을 해야한다는 겁니다...흑흑..

제발요..그리고 디시젼큐브를 이용해보라구 하시는 말씀은 ...하지 말아주세요..

왜냐면...디시젼 큐브는 한 항목 밖에 안돼진 않습니까..count면 count..sum이면 sum..

근데 전 저걸한 화면에 한꺼번에 보여줘야합니다..그리고 화면에 디스플레이 하는것 보다

출력하는게 더 중요합니다..제발. 저좀 도와주세요..

그리고 제 설명중 부족한게 있으면 질문해주시구요..

그럼..꾸벅 부탁 드립니다..



1  COMMENTS
  • Profile
    하얀까마귀 2000.07.04 23:35
    안녕하세요 하얀까마귀 입니다..



    상당히 힘들걸 하시네요...



    제가 아는 방법은 크게 두가지 입니다.



    첫번째로 쿼리는 그냥하고 다른 부분에서 해결하는 거죠..



    select 필드1, 필드2,필드3, sum(필드4) as money from 테이블

    group by 필드1,필드2,필드3



    이렇게 하면 각각의 합을 구할수 있죠...



    하지만 이렇게 하면 각 구분값 별로 값이 나오기 때문에 출력물을 만들때 상당히 애를



    먹습니다.. 그래서 출력물을 간편하게 만들기 이해서 Temp테이블을 만들어서 거기에



    값을 넣기도 합니다..



    ----



    그리고 두번째는 어차피 이런 출력물은 출력형식이 거의 정형화 되어 있기 때문에



    DbLabel이 아닌 그냥 Label에다가 노가다로 넣어주는 거죠..



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

    문제는 두가지다 코딩이 너무 많다는 거죠....



    그리고 다른 방법은 쿼리를 이용해서 하는겁니다..



    이건 파라독스에서는 안될껍니다.. 다른 디비를 사용하는 경우에만 될껍니다..



    정확한 내용을 모르니까 간략하게만 설명을 드릴께요..



    방식은 이렇습니다.. 각 구분값을 하나의 값으로 만들어서 그값을 결과적으로 1 or



    0 으로 만듭니다 그렇게 해서 이값을 최종구해야하는 Money에 곱하는 거죠.. 이렇게



    하면 해당되는 값은 money값이 넘어오고 나머지는 0이 되니까 정확한 계산이 가능합



    니다..



    얘기가 조금 길어졌는데...



    간단하게 예를 들어보죠..



    마구잡이로 넣은 어떤 자료가 있습니다. 여기에서 10일단위로 끊어서 출력을 하고



    싶어요.. 이럴경우 그냥 그룹을 잡아서 해도 되지만 이렇게 하면 한번더 변환을



    해야하고 단지 1-10, 11-20, 21-31까지를 0 또는 1로 만들어 주면 됩니다.



    마찬가지죠



    이걸 하나의 레코드로 만들고 싶은게 문제죠 이럴경우 각 월을 0 or 1로 만들어 줍니다.



    select sign(sign(10 - DatePart(dd, inDate))+ 1) * inamt as amt10,

    //요게 1-10까지

    (1 - sign(sign(10 - DatePart(dd, inDate))+ 1)) *

    sign(sign(20 - DatePart(dd, inDate))+ 1) * inamt as amt20,

    // 요게 11-20까지

    (1 - sign(sign(20 - DatePart(dd, inDate))+ 1)) * inamt as amt30

    //요게 21-30까지

    from inpu

    where indate between '2000-01-01' and '2000-01-31'

    이렇게 하면 값이 amt10 amt20 amt30으로 나오죠...



    쿼리가 좀 복잡하죠??? 하지만 보기 보다 상당히 빠른속도를 보여줄겁니다...



    쿼리를 쓰는 여러가지 방식중에서 제가 무척 좋아하는 방식인데...단저이 좀 복잡해서



    주석을 반드시 달아두어야 나중에 유지보수할때 머리아픈일이 없겠죠..



    음.. 그리고 응용범위도 상당히 넓어서 oracle에서는 decode문등을 이용해도



    비슷한 결과를 얻을 수 있습니다..



    제가 잘 몰라서 글이 좀 길어졌네요... 그럼 즐거운시간 되세요..



    - 초보 하얀까마귀 -







    이은정 wrote:

    > 자료가 아주 많기 때문에 테이블 말구 꼭 쿼리를 써야합니다..

    > 테이블에 필드0, 필드1, 필드2, 필드3, 필드4가 있을때

    > 필드0의 KEY구요,

    > 필드1은 Group by를 해야하는 필드구요

    > 필드2는 항목이 aa, bb, cc ,dd 이렇게 네가지만 가질수 있는 필드구요

    > 필드3은 Boolean값을 가지구 있는 필드 입니다.

    > 필드4는 Money값을 가지구 있습니다..

    >

    > 이필드들의 값을 이용해서 이런 표를 만들어야하거든요..

    >

    > 필드0으로 검색을 한담에 그 자료로..

    >

    > ┏------------------필2------------------┓

    > | | aa | bb | cc | dd || 합계

    > | |cnt | sum |cnt | sum |cnt | sum |cnt | sum ||cnt | sum |

    > ==================================================================================

    > |필3true |cnt 필4sum |cnt 필4sum |cnt 필4sum |cnt 필4sum ||cnt 필4sum|

    > 필1a|필3false|cnt 필4sum |cnt 필4sum |cnt 필4sum |cnt 필4sum ||cnt 필4sum|

    > |필3 계 |cnt 필4sum |cnt 필4sum |cnt 필4sum |cnt 필4sum ||cnt 필4sum|

    > -------------------------------------------------------------------------------- |필3true |cnt 필4sum |cnt 필4sum |cnt 필4sum |cnt 필4sum ||cnt 필4sum|

    > 필1b|필3false|cnt 필4sum |cnt 필4sum |cnt 필4sum |cnt 필4sum ||cnt 필4sum|

    > |필3 계 |cnt 필4sum |cnt 필4sum |cnt 필4sum |cnt 필4sum ||cnt 필4sum|

    > -------------------------------------------------------------------------------

    > |필3true |cnt 필4sum |cnt 필4sum |cnt 필4sum |cnt 필4sum ||cnt 필4sum|

    > 필1c|필3false|cnt 필4sum |cnt 필4sum |cnt 필4sum |cnt 필4sum ||cnt 필4sum|

    > |필3 계 |cnt 필4sum |cnt 필4sum |cnt 필4sum |cnt 필4sum ||cnt 필4sum|

    > ============================================================================= |필3true |cnt 필4sum |cnt 필4sum |cnt 필4sum |cnt 필4sum ||cnt 필4sum|

    > 합계|필3false|cnt 필4sum |cnt 필4sum |cnt 필4sum |cnt 필4sum ||cnt 필4sum|

    > |필3 계 |cnt 필4sum |cnt 필4sum |cnt 필4sum |cnt 필4sum ||cnt 필4sum|

    >

    > 이해가 잘 되실련지 잘모르겠네요..

    > 흠...그러니깐 필드1로 그룹핑을 해야하구요...필드2의 값은 aa,bb,cc,dd네가지밖에 없는데

    > 그걸 또 필드 3의 Boolean값으로 나눠서 true인거 false인거 에 필드4의 값을 합하구,

    > 음...보시면 아시겠지만..결국 필드4의 값의 통계를 내는것입니다..

    > 이거의 쿼리문을 어떻게 써야할지 정말 모르겠습니다..도움좀 주세요..네?네?

    > 제발요...

    > 지금 제가 저것땜에 고민하느냐구. 암것두 못하구 있습니다..

    > 그리고 중요한건 저대로 출력을 해야한다는 겁니다...흑흑..

    > 제발요..그리고 디시젼큐브를 이용해보라구 하시는 말씀은 ...하지 말아주세요..

    > 왜냐면...디시젼 큐브는 한 항목 밖에 안돼진 않습니까..count면 count..sum이면 sum..

    > 근데 전 저걸한 화면에 한꺼번에 보여줘야합니다..그리고 화면에 디스플레이 하는것 보다

    > 출력하는게 더 중요합니다..제발. 저좀 도와주세요..

    > 그리고 제 설명중 부족한게 있으면 질문해주시구요..

    > 그럼..꾸벅 부탁 드립니다..

    >

    • kgh
    • 2000.07.05 00:32
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 성호종
      2000.07.05 19:09
      kgh wrote: 저도 아주아주 오래전에 Access 해본적이 있었는데 만약 insert가 안
    • 유레카
      2000.07.05 06:32
      NUMBERIC은 8바이트 가변적 실수형이지요. DB타입이 Numberic이면 당연히 쿼리의 필터에디터에는 TFloatF...
    • 이은경
    • 2000.07.05 00:06
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 하얀까마귀
      2000.07.05 01:32
      허걱...... 이걸로는 아무도 답변 안해 드릴껍니다... 뭐가 잘못인지 모르거든요... 우선 디버깅 하...
    • 이병웅
    • 2000.07.04 23:59
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2000.07.05 00:01
      안녕하세요. 최용일입니다. 차일드 폼의 크기를 고정시키지 마시고 BorderStyle속성을 bsSizeable로 해...
    • 이병웅
      2000.07.05 00:41
      최용일 wrote: > 안녕하세요. 최용일입니다. > > 차일드 폼의 크기를 고정시키지 마시고 BorderStyle속...
    • 최진석
    • 2000.07.04 23:57
    • 4 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2000.07.05 00:05
      안녕하세요. 최용일입니다. 트레이 아이콘으로 만드는 것은 인스톨쉴드가 아니라 프로그램내에서 해주어...
    • 최진석
      2000.07.06 19:10
      안녕하세요..용일님. 먼저 답변 감사드리구요... 답변내용중 "인스톨쉴드에서 시작프로그램메뉴에 바로가...
    • 최용일
      2000.07.06 22:22
      안녕하세요. 최용일입니다. Start Menu Folder가 아니라 Startup Folder입니다. 자료실에 한글메뉴얼...
    • 최진석
      2000.07.08 19:10
      최용일님 언제나 답변 감사드립니다.
    • 유레카
      2000.07.05 06:49
      아래와 같이 코딩해 보세요.. procedure TForm1.DBGrid1DrawDataCell(Sender: TObject; const Rect: TRe...
    • 김인수
      2000.07.06 18:31
      유레카 wrote: > 아래와 같이 코딩해 보세요.. > > procedure TForm1.DBGrid1DrawDataCell(Sender: TOb...
    • 왕초보
      2000.07.05 00:58
      김태영 wrote: > 비베에서 사용하는 다음과 같은 함수를 델파이에서는 어떻게 사용하는지 궁금하네요. > ...
    • 최용일
      2000.07.05 00:08
      안녕하세요. 최용일입니다. Str(), Chr(), LowerCase(), TrimLeft(), TrimRight(), Trim() 인것 같군요....
    • 김태영
      2000.07.05 00:14
      수치를 string으로 바꾸어주는 함수입니다. 최용일 wrote: > 안녕하세요. 최용일입니다. > > Str(),...
    • 최용일
      2000.07.05 00:36
      글면 Str()함수겠네요... 어! str$()는 무슨 함수예요? 김태영 wrote: > 수치를 string으로 바꾸어주는...
    • 유레카
      2000.07.05 06:36
      MAX, MIN은 ORDER BY ..(DESC)를 사용해서 구하면 될 것 같구.. AVG는 SUM(필드명)/COUNT(필드명) 하면...
    • 최용일
      2000.07.04 22:51
      안녕하세요. 최용일입니다. Chr함수를 사용하거나 Char로 형변환하세요. 이런건 델파이 헬프를 보거나 ...
    • 알로에
    • 2000.07.04 21:40
    • 4 COMMENTS
    • /
    • 0 LIKES
    • 이재원
      2000.07.08 01:26
      안녕하세요. 답은 하얀 까마귀님이 해주셨는데요. 쓰시는 코드 보다 좀더 안전한 코딩 방법이 있어서 몇줄 ...
    • 하얀까마귀
      2000.07.04 22:01
      안녕하세요 하얀까마귀 입니다. 소스에서 잘모르는게 있어서.. DataIListF하고 DatIListF하고 다른...
    • 알로에
      2000.07.04 22:11
      하얀까마귀 wrote: > 안녕하세요 하얀까마귀 입니다. > > 소스에서 잘모르는게 있어서.. > > DataI...
    • 하얀까마귀
      2000.07.05 05:02
      안녕하세요 하얀까마귀 입니다.. 같은거라면 위에서 free시켜 주셧잖아요 한번 더 해주시면 거기서 에러...
    • 은철수
      2000.07.04 22:49
      안녕하세요... 항상 이곳에서 많은 도움을 받아서 이젠 델파이에 대해 조금 알게되었네요.. 그러다 보...
    • 하얀까마귀
      2000.07.04 22:05
      안녕하세요 하얀까마귀 입니다.. 일련번호 규칙을 잘 모르겠는데.. Max를 구하시면 안되나요??? 날...
    • 타락천사
      2000.07.05 00:33
      안녕하세여.. 타락임다..^^ 가끔씩, 자주 머리가 다운되여....ㅠㅠ 흠.. 어칼까 고민하다가.. qryRes...
    • 하얀까마귀
      2000.07.05 05:15
      사족: 요즈음 고수덜까지 "초보"라구 하는데... 고민임다...-~- 허걱 혹시 절 두고 하신말씀은 아니시...
    • 델초...
    • 2000.07.04 21:18
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2000.07.04 22:06
      안녕하세요. 최용일입니다. Assigned함수를 쓰세요. 그럼 알 수 있습니다. 객체가 nil인가로 판단하는 ...
    • 이은정
    • 2000.07.04 21:01
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 하얀까마귀
      2000.07.04 23:35
      안녕하세요 하얀까마귀 입니다.. 상당히 힘들걸 하시네요... 제가 아는 방법은 크게 두가지 입니다. ...
    • 류응철
    • 2000.07.04 20:39
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 하얀까마귀
      2000.07.04 20:47
      안녕하세요 하얀까마귀 입니다... 랜덤함수에 문자는 안됩니다.. 아스키 코드로 랜덤함수로 만들고 ...
    • 류응철
      2000.07.04 20:52
      넵.. 그렇게 하려고 해서 65~90까지의 수를 랜덤하게 받으려고 잠깐 생각했는데 방법이 없어서.. 글 올렸다...
    • 하얀까마귀
      2000.07.04 20:53
      안녕하세요 하얀까마귀 입니다.. ComponentCount, Components 를 이용하면 가능합니다. 간단하게 만....