Q&A

  • 3일째입니다 도와주세요 (각 필드마다 각각의 값 별로 Count 구하는 법?)
고수님들꼭



a필드 b필드

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

2101 05101

2101 05101

2101 05102

2102 05102

2102 05103

2102 05103



위와 같은 db에서 a , B 필드별 b필드의 count를 하고 싶습니다

즉 다음과 같은 결과를 구하구 싶습니다



a b의 카운트1 b의 카운트2

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

2101 | 2 (05101의 count) | 1(05102의 count)

2102 | 1 (05102의 count) | 2(05103의 count)

4  COMMENTS
  • Profile
    구자송 2000.08.24 22:33
    몇자적어봅니다.

    table이나 grid, SQL를 함께사용을해야 쉽게풀릴것같습니다.

    먼저 group by a,b를 사용하면 (a, b의 카운트1) 까지는 해결이 되는군요.

    Count도 사용을 해야겠지요.

    RowCount를 체크해서 grid나 table의 Row를 설정하면 되겠습니다.

    SQL를 Read해서 (a, B의 카운트1)의 값을 grid로 옮겨주고

    다시 group by b로하면 (b의 카운트2)의 문제가 해결이 되겠네요.

    SQL를 Read해 grid에 넣어주면 끝나는것같습니다.

    인쇄를 할려면 onNeedData를 사용하면 해결이 됩니다.



    제가 님께서 생각하신 의도를 정확히 파악을 하였는지는 모르지만 도움이 되었으면 좋겠습니다.



    hnc wrote:

    > 고수님들꼭

    >

    > a필드 b필드

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

    > 2101 05101

    > 2101 05101

    > 2101 05102

    > 2102 05102

    > 2102 05103

    > 2102 05103

    >

    > 위와 같은 db에서 a , B 필드별 b필드의 count를 하고 싶습니다

    > 즉 다음과 같은 결과를 구하구 싶습니다

    >

    > a b의 카운트1 b의 카운트2

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

    > 2101 | 2 (05101의 count) | 1(05102의 count)

    > 2102 | 1 (05102의 count) | 2(05103의 count)

  • Profile
    666 2000.08.24 21:13
    제가 질문하신 내용을 잘 이해했는지 모르겠네요.

    아래 쿼리문은 다음과 같은 출력물 포멧에 맞게끔 한 쿼리문입니다.



    area1 | area2 | area3 area4

    ---------------------------|------------|--------------------------------------

    부서1 직업1 count | count |

    부서1 직업2 count | count |

    부서1 직업3 count | count | 좌동

    부서2 직업2 count | count |

    부서2 직업3 count | count |

    부서3 직업4 count | count |



    게시판 폭이 좁아 이상하게 보이니 편집기로 복사하셔

    넓게 보십시요.

    참고로 크리스탈 레포트로 출력이 됩니다.

    그럼 행복하시고 도움이 되었으면 합니다.



    with qrySource do

    begin

    Close;

    SQL.Clear;

    SQL.Add( 'SELECT A.DISCI_CODE, A.JOB_GROUPCODE, NVL( U1.CNT, 0 ) U1, NVL( U2.CNT, 0 ) U2, NVL( U3.CNT, 0 ) U3,' );

    SQL.Add( ' NVL( U4.CNT, 0 ) U4, NVL( U5.CNT, 0 ) U5, NVL( U6.CNT, 0 ) U6, NVL( U7.CNT, 0 ) U7, NVL( U8.CNT, 0 ) U8,' );

    SQL.Add( ' NVL( U9.CNT, 0 ) U9, NVL( U10.CNT, 0 ) U10, NVL( U11.CNT, 0 ) U11, NVL( U12.CNT, 0 ) U12,' );

    SQL.Add( ' NVL( U13.CNT, 0 ) U13, NVL( U14.CNT, 0 ) U14, NVL( U15.CNT, 0 ) U15, NVL( U16.CNT, 0 ) U16,' );

    SQL.Add( ' NVL( U17.CNT, 0 ) U17, NVL( U18.CNT, 0 ) U18, NVL( U19.CNT, 0 ) U19, NVL( U20.CNT, 0 ) U20,' );

    SQL.Add( ' NVL( U21.CNT, 0 ) U21, NVL( U22.CNT, 0 ) U22, NVL( U23.CNT, 0 ) U23, NVL( U24.CNT, 0 ) U24,' );

    SQL.Add( ' NVL( A6.CNT, 0 ) A6, NVL( A10.CNT, 0 ) A10, NVL( A15.CNT, 0 ) A15, NVL( WT.CNT, 0 ) WT' );

    SQL.Add( 'FROM ( SELECT DISCI_CODE, JOB_GROUPCODE' );

    SQL.Add( ' FROM HRCS_WORK' );

    SQL.Add( ' WHERE ( GROUP_CODE = ''DW'' OR GROUP_CODE = ''OS'' OR GROUP_CODE = ''TS'' )' );

    SQL.Add( ' AND WORK_DATE = TO_DATE( ''' + DateToStr( dtpCheckDate.Date ) + ''', ''MM/DD/YYYY'' )' );

    SQL.Add( ' AND DISCI_CODE = ANY ( SELECT DISCI_CODE FROM HRCS_DISCI GROUP BY DISCI_CODE )' );

    SQL.Add( ' GROUP BY DISCI_CODE, JOB_GROUPCODE' );

    SQL.Add( ' ) A,' );

    SQL.Add( ' ( SELECT DISCI_CODE, JOB_GROUPCODE, COUNT( CONT_NO ) CNT' );

    SQL.Add( ' FROM HRCS_WORK' );

    SQL.Add( ' WHERE UNIT_CODE = 1' );

    SQL.Add( ' AND CATE_CODE = 1' );

    SQL.Add( ' AND DISCI_CODE = ANY ( SELECT DISCI_CODE FROM HRCS_DISCI GROUP BY DISCI_CODE )' );

    SQL.Add( ' AND ( GROUP_CODE = ''DW'' OR GROUP_CODE = ''OS'' OR GROUP_CODE = ''TS'' )' );

    SQL.Add( ' AND WORK_DATE = TO_DATE( ''' + DateToStr( dtpCheckDate.Date ) + ''', ''MM/DD/YYYY'' )' );

    SQL.Add( ' GROUP BY DISCI_CODE, JOB_GROUPCODE' );

    SQL.Add( ' ) U1,' );

    SQL.Add( ' ( SELECT DISCI_CODE, JOB_GROUPCODE, COUNT( CONT_NO ) CNT' );

    SQL.Add( ' FROM HRCS_WORK' );

    SQL.Add( ' WHERE UNIT_CODE = 1' );

    SQL.Add( ' AND CATE_CODE = 2' );

    SQL.Add( ' AND DISCI_CODE = ANY ( SELECT DISCI_CODE FROM HRCS_DISCI GROUP BY DISCI_CODE )' );

    SQL.Add( ' AND ( GROUP_CODE = ''DW'' OR GROUP_CODE = ''OS'' OR GROUP_CODE = ''TS'' )' );

    SQL.Add( ' AND WORK_DATE = TO_DATE( ''' + DateToStr( dtpCheckDate.Date ) + ''', ''MM/DD/YYYY'' )' );

    SQL.Add( ' GROUP BY DISCI_CODE, JOB_GROUPCODE' );

    SQL.Add( ' ) U2,' );

    SQL.Add( ' ( SELECT DISCI_CODE, JOB_GROUPCODE, COUNT( CONT_NO ) CNT' );

    SQL.Add( ' FROM HRCS_WORK' );

    SQL.Add( ' WHERE UNIT_CODE = 2' );

    SQL.Add( ' AND CATE_CODE = 3' );

    SQL.Add( ' AND DISCI_CODE = ANY ( SELECT DISCI_CODE FROM HRCS_DISCI GROUP BY DISCI_CODE )' );

    SQL.Add( ' AND ( GROUP_CODE = ''DW'' OR GROUP_CODE = ''OS'' OR GROUP_CODE = ''TS'' )' );

    SQL.Add( ' AND WORK_DATE = TO_DATE( ''' + DateToStr( dtpCheckDate.Date ) + ''', ''MM/DD/YYYY'' )' );

    SQL.Add( ' GROUP BY DISCI_CODE, JOB_GROUPCODE' );

    SQL.Add( ' ) U3,' );

    SQL.Add( ' ( SELECT DISCI_CODE, JOB_GROUPCODE, COUNT( CONT_NO ) CNT' );

    SQL.Add( ' FROM HRCS_WORK' );

    SQL.Add( ' WHERE UNIT_CODE = 2' );

    SQL.Add( ' AND CATE_CODE = 4' );

    SQL.Add( ' AND DISCI_CODE = ANY ( SELECT DISCI_CODE FROM HRCS_DISCI GROUP BY DISCI_CODE )' );

    SQL.Add( ' AND ( GROUP_CODE = ''DW'' OR GROUP_CODE = ''OS'' OR GROUP_CODE = ''TS'' )' );

    SQL.Add( ' AND WORK_DATE = TO_DATE( ''' + DateToStr( dtpCheckDate.Date ) + ''', ''MM/DD/YYYY'' )' );

    SQL.Add( ' GROUP BY DISCI_CODE, JOB_GROUPCODE' );

    SQL.Add( ' ) U4,' );

    SQL.Add( ' ( SELECT DISCI_CODE, JOB_GROUPCODE, COUNT( CONT_NO ) CNT' );

    SQL.Add( ' FROM HRCS_WORK' );

    SQL.Add( ' WHERE UNIT_CODE = 2' );

    SQL.Add( ' AND CATE_CODE = 5' );

    SQL.Add( ' AND DISCI_CODE = ANY ( SELECT DISCI_CODE FROM HRCS_DISCI GROUP BY DISCI_CODE )' );

    SQL.Add( ' AND ( GROUP_CODE = ''DW'' OR GROUP_CODE = ''OS'' OR GROUP_CODE = ''TS'' )' );

    SQL.Add( ' AND WORK_DATE = TO_DATE( ''' + DateToStr( dtpCheckDate.Date ) + ''', ''MM/DD/YYYY'' )' );

    SQL.Add( ' GROUP BY DISCI_CODE, JOB_GROUPCODE' );

    SQL.Add( ' ) U5,' );

    SQL.Add( ' ( SELECT DISCI_CODE, JOB_GROUPCODE, COUNT( CONT_NO ) CNT' );

    SQL.Add( ' FROM HRCS_WORK' );

    SQL.Add( ' WHERE UNIT_CODE = 2' );

    SQL.Add( ' AND CATE_CODE = 6' );

    SQL.Add( ' AND DISCI_CODE = ANY ( SELECT DISCI_CODE FROM HRCS_DISCI GROUP BY DISCI_CODE )' );

    SQL.Add( ' AND ( GROUP_CODE = ''DW'' OR GROUP_CODE = ''OS'' OR GROUP_CODE = ''TS'' )' );

    SQL.Add( ' AND WORK_DATE = TO_DATE( ''' + DateToStr( dtpCheckDate.Date ) + ''', ''MM/DD/YYYY'' )' );

    SQL.Add( ' GROUP BY DISCI_CODE, JOB_GROUPCODE' );

    SQL.Add( ' ) U6,' );

    SQL.Add( ' ( SELECT DISCI_CODE, JOB_GROUPCODE, COUNT( CONT_NO ) CNT' );

    SQL.Add( ' FROM HRCS_WORK' );

    SQL.Add( ' WHERE UNIT_CODE = 3' );

    SQL.Add( ' AND CATE_CODE = 7' );

    SQL.Add( ' AND DISCI_CODE = ANY ( SELECT DISCI_CODE FROM HRCS_DISCI GROUP BY DISCI_CODE )' );

    SQL.Add( ' AND ( GROUP_CODE = ''DW'' OR GROUP_CODE = ''OS'' OR GROUP_CODE = ''TS'' )' );

    SQL.Add( ' AND WORK_DATE = TO_DATE( ''' + DateToStr( dtpCheckDate.Date ) + ''', ''MM/DD/YYYY'' )' );

    SQL.Add( ' GROUP BY DISCI_CODE, JOB_GROUPCODE' );

    SQL.Add( ' ) U7,' );

    SQL.Add( ' ( SELECT DISCI_CODE, JOB_GROUPCODE, COUNT( CONT_NO ) CNT' );

    SQL.Add( ' FROM HRCS_WORK' );

    SQL.Add( ' WHERE UNIT_CODE = 3' );

    SQL.Add( ' AND CATE_CODE = 8' );

    SQL.Add( ' AND DISCI_CODE = ANY ( SELECT DISCI_CODE FROM HRCS_DISCI GROUP BY DISCI_CODE )' );

    SQL.Add( ' AND ( GROUP_CODE = ''DW'' OR GROUP_CODE = ''OS'' OR GROUP_CODE = ''TS'' )' );

    SQL.Add( ' AND WORK_DATE = TO_DATE( ''' + DateToStr( dtpCheckDate.Date ) + ''', ''MM/DD/YYYY'' )' );

    SQL.Add( ' GROUP BY DISCI_CODE, JOB_GROUPCODE' );

    SQL.Add( ' ) U8,' );

    SQL.Add( ' ( SELECT DISCI_CODE, JOB_GROUPCODE, COUNT( CONT_NO ) CNT' );

    SQL.Add( ' FROM HRCS_WORK' );

    SQL.Add( ' WHERE UNIT_CODE = 3' );

    SQL.Add( ' AND CATE_CODE = 9' );

    SQL.Add( ' AND DISCI_CODE = ANY ( SELECT DISCI_CODE FROM HRCS_DISCI GROUP BY DISCI_CODE )' );

    SQL.Add( ' AND ( GROUP_CODE = ''DW'' OR GROUP_CODE = ''OS'' OR GROUP_CODE = ''TS'' )' );

    SQL.Add( ' AND WORK_DATE = TO_DATE( ''' + DateToStr( dtpCheckDate.Date ) + ''', ''MM/DD/YYYY'' )' );

    SQL.Add( ' GROUP BY DISCI_CODE, JOB_GROUPCODE' );

    SQL.Add( ' ) U9,' );

    SQL.Add( ' ( SELECT DISCI_CODE, JOB_GROUPCODE, COUNT( CONT_NO ) CNT' );

    SQL.Add( ' FROM HRCS_WORK' );

    SQL.Add( ' WHERE UNIT_CODE = 3' );

    SQL.Add( ' AND CATE_CODE = 10' );

    SQL.Add( ' AND DISCI_CODE = ANY ( SELECT DISCI_CODE FROM HRCS_DISCI GROUP BY DISCI_CODE )' );

    SQL.Add( ' AND ( GROUP_CODE = ''DW'' OR GROUP_CODE = ''OS'' OR GROUP_CODE = ''TS'' )' );

    SQL.Add( ' AND WORK_DATE = TO_DATE( ''' + DateToStr( dtpCheckDate.Date ) + ''', ''MM/DD/YYYY'' )' );

    SQL.Add( ' GROUP BY DISCI_CODE, JOB_GROUPCODE' );

    SQL.Add( ' ) U10,' );

    SQL.Add( ' ( SELECT DISCI_CODE, JOB_GROUPCODE, COUNT( CONT_NO ) CNT' );

    SQL.Add( ' FROM HRCS_WORK' );

    SQL.Add( ' WHERE UNIT_CODE = 3' );

    SQL.Add( ' AND CATE_CODE = 11' );

    SQL.Add( ' AND DISCI_CODE = ANY ( SELECT DISCI_CODE FROM HRCS_DISCI GROUP BY DISCI_CODE )' );

    SQL.Add( ' AND ( GROUP_CODE = ''DW'' OR GROUP_CODE = ''OS'' OR GROUP_CODE = ''TS'' )' );

    SQL.Add( ' AND WORK_DATE = TO_DATE( ''' + DateToStr( dtpCheckDate.Date ) + ''', ''MM/DD/YYYY'' )' );

    SQL.Add( ' GROUP BY DISCI_CODE, JOB_GROUPCODE' );

    SQL.Add( ' ) U11,' );

    SQL.Add( ' ( SELECT DISCI_CODE, JOB_GROUPCODE, COUNT( CONT_NO ) CNT' );

    SQL.Add( ' FROM HRCS_WORK' );

    SQL.Add( ' WHERE UNIT_CODE = 3' );

    SQL.Add( ' AND CATE_CODE = 12' );

    SQL.Add( ' AND DISCI_CODE = ANY ( SELECT DISCI_CODE FROM HRCS_DISCI GROUP BY DISCI_CODE )' );

    SQL.Add( ' AND ( GROUP_CODE = ''DW'' OR GROUP_CODE = ''OS'' OR GROUP_CODE = ''TS'' )' );

    SQL.Add( ' AND WORK_DATE = TO_DATE( ''' + DateToStr( dtpCheckDate.Date ) + ''', ''MM/DD/YYYY'' )' );

    SQL.Add( ' GROUP BY DISCI_CODE, JOB_GROUPCODE' );

    SQL.Add( ' ) U12,' );

    SQL.Add( ' ( SELECT DISCI_CODE, JOB_GROUPCODE, COUNT( CONT_NO ) CNT' );

    SQL.Add( ' FROM HRCS_WORK' );

    SQL.Add( ' WHERE UNIT_CODE = 4' );

    SQL.Add( ' AND CATE_CODE = 13' );

    SQL.Add( ' AND DISCI_CODE = ANY ( SELECT DISCI_CODE FROM HRCS_DISCI GROUP BY DISCI_CODE )' );

    SQL.Add( ' AND ( GROUP_CODE = ''DW'' OR GROUP_CODE = ''OS'' OR GROUP_CODE = ''TS'' )' );

    SQL.Add( ' AND WORK_DATE = TO_DATE( ''' + DateToStr( dtpCheckDate.Date ) + ''', ''MM/DD/YYYY'' )' );

    SQL.Add( ' GROUP BY DISCI_CODE, JOB_GROUPCODE' );

    SQL.Add( ' ) U13,' );

    SQL.Add( ' ( SELECT DISCI_CODE, JOB_GROUPCODE, COUNT( CONT_NO ) CNT' );

    SQL.Add( ' FROM HRCS_WORK' );

    SQL.Add( ' WHERE UNIT_CODE = 4' );

    SQL.Add( ' AND CATE_CODE = 14' );

    SQL.Add( ' AND DISCI_CODE = ANY ( SELECT DISCI_CODE FROM HRCS_DISCI GROUP BY DISCI_CODE )' );

    SQL.Add( ' AND ( GROUP_CODE = ''DW'' OR GROUP_CODE = ''OS'' OR GROUP_CODE = ''TS'' )' );

    SQL.Add( ' AND WORK_DATE = TO_DATE( ''' + DateToStr( dtpCheckDate.Date ) + ''', ''MM/DD/YYYY'' )' );

    SQL.Add( ' GROUP BY DISCI_CODE, JOB_GROUPCODE' );

    SQL.Add( ' ) U14,' );

    SQL.Add( ' ( SELECT DISCI_CODE, JOB_GROUPCODE, COUNT( CONT_NO ) CNT' );

    SQL.Add( ' FROM HRCS_WORK' );

    SQL.Add( ' WHERE UNIT_CODE = 4' );

    SQL.Add( ' AND CATE_CODE = 15' );

    SQL.Add( ' AND DISCI_CODE = ANY ( SELECT DISCI_CODE FROM HRCS_DISCI GROUP BY DISCI_CODE )' );

    SQL.Add( ' AND ( GROUP_CODE = ''DW'' OR GROUP_CODE = ''OS'' OR GROUP_CODE = ''TS'' )' );

    SQL.Add( ' AND WORK_DATE = TO_DATE( ''' + DateToStr( dtpCheckDate.Date ) + ''', ''MM/DD/YYYY'' )' );

    SQL.Add( ' GROUP BY DISCI_CODE, JOB_GROUPCODE' );

    SQL.Add( ' ) U15,' );

    SQL.Add( ' ( SELECT DISCI_CODE, JOB_GROUPCODE, COUNT( CONT_NO ) CNT' );

    SQL.Add( ' FROM HRCS_WORK' );

    SQL.Add( ' WHERE UNIT_CODE = 4' );

    SQL.Add( ' AND CATE_CODE = 16' );

    SQL.Add( ' AND DISCI_CODE = ANY ( SELECT DISCI_CODE FROM HRCS_DISCI GROUP BY DISCI_CODE )' );

    SQL.Add( ' AND ( GROUP_CODE = ''DW'' OR GROUP_CODE = ''OS'' OR GROUP_CODE = ''TS'' )' );

    SQL.Add( ' AND WORK_DATE = TO_DATE( ''' + DateToStr( dtpCheckDate.Date ) + ''', ''MM/DD/YYYY'' )' );

    SQL.Add( ' GROUP BY DISCI_CODE, JOB_GROUPCODE' );

    SQL.Add( ' ) U16,' );

    SQL.Add( ' ( SELECT DISCI_CODE, JOB_GROUPCODE, COUNT( CONT_NO ) CNT' );

    SQL.Add( ' FROM HRCS_WORK' );

    SQL.Add( ' WHERE UNIT_CODE = 4' );

    SQL.Add( ' AND CATE_CODE = 17' );

    SQL.Add( ' AND DISCI_CODE = ANY ( SELECT DISCI_CODE FROM HRCS_DISCI GROUP BY DISCI_CODE )' );

    SQL.Add( ' AND ( GROUP_CODE = ''DW'' OR GROUP_CODE = ''OS'' OR GROUP_CODE = ''TS'' )' );

    SQL.Add( ' AND WORK_DATE = TO_DATE( ''' + DateToStr( dtpCheckDate.Date ) + ''', ''MM/DD/YYYY'' )' );

    SQL.Add( ' GROUP BY DISCI_CODE, JOB_GROUPCODE' );

    SQL.Add( ' ) U17,' );

    SQL.Add( ' ( SELECT DISCI_CODE, JOB_GROUPCODE, COUNT( CONT_NO ) CNT' );

    SQL.Add( ' FROM HRCS_WORK' );

    SQL.Add( ' WHERE UNIT_CODE = 4' );

    SQL.Add( ' AND CATE_CODE = 18' );

    SQL.Add( ' AND DISCI_CODE = ANY ( SELECT DISCI_CODE FROM HRCS_DISCI GROUP BY DISCI_CODE )' );

    SQL.Add( ' AND ( GROUP_CODE = ''DW'' OR GROUP_CODE = ''OS'' OR GROUP_CODE = ''TS'' )' );

    SQL.Add( ' AND WORK_DATE = TO_DATE( ''' + DateToStr( dtpCheckDate.Date ) + ''', ''MM/DD/YYYY'' )' );

    SQL.Add( ' GROUP BY DISCI_CODE, JOB_GROUPCODE' );

    SQL.Add( ' ) U18,' );

    SQL.Add( ' ( SELECT DISCI_CODE, JOB_GROUPCODE, COUNT( CONT_NO ) CNT' );

    SQL.Add( ' FROM HRCS_WORK' );

    SQL.Add( ' WHERE UNIT_CODE = 4' );

    SQL.Add( ' AND CATE_CODE = 19' );

    SQL.Add( ' AND DISCI_CODE = ANY ( SELECT DISCI_CODE FROM HRCS_DISCI GROUP BY DISCI_CODE )' );

    SQL.Add( ' AND ( GROUP_CODE = ''DW'' OR GROUP_CODE = ''OS'' OR GROUP_CODE = ''TS'' )' );

    SQL.Add( ' AND WORK_DATE = TO_DATE( ''' + DateToStr( dtpCheckDate.Date ) + ''', ''MM/DD/YYYY'' )' );

    SQL.Add( ' GROUP BY DISCI_CODE, JOB_GROUPCODE' );

    SQL.Add( ' ) U19,' );

    SQL.Add( ' ( SELECT DISCI_CODE, JOB_GROUPCODE, COUNT( CONT_NO ) CNT' );

    SQL.Add( ' FROM HRCS_WORK' );

    SQL.Add( ' WHERE UNIT_CODE = 5' );

    SQL.Add( ' AND CATE_CODE = 20' );

    SQL.Add( ' AND DISCI_CODE = ANY ( SELECT DISCI_CODE FROM HRCS_DISCI GROUP BY DISCI_CODE )' );

    SQL.Add( ' AND ( GROUP_CODE = ''DW'' OR GROUP_CODE = ''OS'' OR GROUP_CODE = ''TS'' )' );

    SQL.Add( ' AND WORK_DATE = TO_DATE( ''' + DateToStr( dtpCheckDate.Date ) + ''', ''MM/DD/YYYY'' )' );

    SQL.Add( ' GROUP BY DISCI_CODE, JOB_GROUPCODE' );

    SQL.Add( ' ) U20,' );

    SQL.Add( ' ( SELECT DISCI_CODE, JOB_GROUPCODE, COUNT( CONT_NO ) CNT' );

    SQL.Add( ' FROM HRCS_WORK' );

    SQL.Add( ' WHERE UNIT_CODE = 5' );

    SQL.Add( ' AND CATE_CODE = 21' );

    SQL.Add( ' AND DISCI_CODE = ANY ( SELECT DISCI_CODE FROM HRCS_DISCI GROUP BY DISCI_CODE )' );

    SQL.Add( ' AND ( GROUP_CODE = ''DW'' OR GROUP_CODE = ''OS'' OR GROUP_CODE = ''TS'' )' );

    SQL.Add( ' AND WORK_DATE = TO_DATE( ''' + DateToStr( dtpCheckDate.Date ) + ''', ''MM/DD/YYYY'' )' );

    SQL.Add( ' GROUP BY DISCI_CODE, JOB_GROUPCODE' );

    SQL.Add( ' ) U21,' );

    SQL.Add( ' ( SELECT DISCI_CODE, JOB_GROUPCODE, COUNT( CONT_NO ) CNT' );

    SQL.Add( ' FROM HRCS_WORK' );

    SQL.Add( ' WHERE UNIT_CODE = 5' );

    SQL.Add( ' AND CATE_CODE = 22' );

    SQL.Add( ' AND DISCI_CODE = ANY ( SELECT DISCI_CODE FROM HRCS_DISCI GROUP BY DISCI_CODE )' );

    SQL.Add( ' AND ( GROUP_CODE = ''DW'' OR GROUP_CODE = ''OS'' OR GROUP_CODE = ''TS'' )' );

    SQL.Add( ' AND WORK_DATE = TO_DATE( ''' + DateToStr( dtpCheckDate.Date ) + ''', ''MM/DD/YYYY'' )' );

    SQL.Add( ' GROUP BY DISCI_CODE, JOB_GROUPCODE' );

    SQL.Add( ' ) U22,' );

    SQL.Add( ' ( SELECT DISCI_CODE, JOB_GROUPCODE, COUNT( CONT_NO ) CNT' );

    SQL.Add( ' FROM HRCS_WORK' );

    SQL.Add( ' WHERE UNIT_CODE = 5' );

    SQL.Add( ' AND CATE_CODE = 23' );

    SQL.Add( ' AND DISCI_CODE = ANY ( SELECT DISCI_CODE FROM HRCS_DISCI GROUP BY DISCI_CODE )' );

    SQL.Add( ' AND ( GROUP_CODE = ''DW'' OR GROUP_CODE = ''OS'' OR GROUP_CODE = ''TS'' )' );

    SQL.Add( ' AND WORK_DATE = TO_DATE( ''' + DateToStr( dtpCheckDate.Date ) + ''', ''MM/DD/YYYY'' )' );

    SQL.Add( ' GROUP BY DISCI_CODE, JOB_GROUPCODE' );

    SQL.Add( ' ) U23,' );

    SQL.Add( ' ( SELECT DISCI_CODE, JOB_GROUPCODE, COUNT( CONT_NO ) CNT' );

    SQL.Add( ' FROM HRCS_WORK' );

    SQL.Add( ' WHERE UNIT_CODE = 5' );

    SQL.Add( ' AND CATE_CODE = 24' );

    SQL.Add( ' AND DISCI_CODE = ANY ( SELECT DISCI_CODE FROM HRCS_DISCI GROUP BY DISCI_CODE )' );

    SQL.Add( ' AND ( GROUP_CODE = ''DW'' OR GROUP_CODE = ''OS'' OR GROUP_CODE = ''TS'' )' );

    SQL.Add( ' AND WORK_DATE = TO_DATE( ''' + DateToStr( dtpCheckDate.Date ) + ''', ''MM/DD/YYYY'' )' );

    SQL.Add( ' GROUP BY DISCI_CODE, JOB_GROUPCODE' );

    SQL.Add( ' ) U24,' );

    SQL.Add( ' ( SELECT DISCI_CODE, JOB_GROUPCODE, COUNT( CONT_NO ) CNT' );

    SQL.Add( ' FROM HRCS_WORK' );

    SQL.Add( ' WHERE UNIT_CODE = 6' );

    SQL.Add( ' AND DISCI_CODE = ANY ( SELECT DISCI_CODE FROM HRCS_DISCI GROUP BY DISCI_CODE )' );

    SQL.Add( ' AND ( GROUP_CODE = ''DW'' OR GROUP_CODE = ''OS'' OR GROUP_CODE = ''TS'' )' );

    SQL.Add( ' AND WORK_DATE = TO_DATE( ''' + DateToStr( dtpCheckDate.Date ) + ''', ''MM/DD/YYYY'' )' );

    SQL.Add( ' GROUP BY DISCI_CODE, JOB_GROUPCODE' );

    SQL.Add( ' ) A6,' );

    SQL.Add( ' ( SELECT DISCI_CODE, JOB_GROUPCODE, COUNT( CONT_NO ) CNT' );

    SQL.Add( ' FROM HRCS_WORK' );

    SQL.Add( ' WHERE UNIT_CODE = 10' );

    SQL.Add( ' AND DISCI_CODE = ANY ( SELECT DISCI_CODE FROM HRCS_DISCI GROUP BY DISCI_CODE )' );

    SQL.Add( ' AND ( GROUP_CODE = ''DW'' OR GROUP_CODE = ''OS'' OR GROUP_CODE = ''TS'' )' );

    SQL.Add( ' AND WORK_DATE = TO_DATE( ''' + DateToStr( dtpCheckDate.Date ) + ''', ''MM/DD/YYYY'' )' );

    SQL.Add( ' GROUP BY DISCI_CODE, JOB_GROUPCODE' );

    SQL.Add( ' ) A10,' );

    SQL.Add( ' ( SELECT DISCI_CODE, JOB_GROUPCODE, COUNT( CONT_NO ) CNT' );

    SQL.Add( ' FROM HRCS_WORK' );

    SQL.Add( ' WHERE UNIT_CODE = 15' );

    SQL.Add( ' AND DISCI_CODE = ANY ( SELECT DISCI_CODE FROM HRCS_DISCI GROUP BY DISCI_CODE )' );

    SQL.Add( ' AND ( GROUP_CODE = ''DW'' OR GROUP_CODE = ''OS'' OR GROUP_CODE = ''TS'' )' );

    SQL.Add( ' AND WORK_DATE = TO_DATE( ''' + DateToStr( dtpCheckDate.Date ) + ''', ''MM/DD/YYYY'' )' );

    SQL.Add( ' GROUP BY DISCI_CODE, JOB_GROUPCODE' );

    SQL.Add( ' ) A15,' );

    SQL.Add( ' ( SELECT DISCI_CODE, JOB_GROUPCODE, COUNT( CONT_NO ) CNT' );

    SQL.Add( ' FROM HRCS_WORK' );

    SQL.Add( ' WHERE DISCI_CODE = ANY ( SELECT DISCI_CODE FROM HRCS_DISCI GROUP BY DISCI_CODE )' );

    SQL.Add( ' AND ( GROUP_CODE = ''DW'' OR GROUP_CODE = ''OS'' OR GROUP_CODE = ''TS'' )' );

    SQL.Add( ' AND WORK_DATE <= TO_DATE( ''' + DateToStr( dtpCheckDate.Date ) + ''', ''MM/DD/YYYY'' )' );

    SQL.Add( ' GROUP BY DISCI_CODE, JOB_GROUPCODE' );

    SQL.Add( ' ) WT' );

    SQL.Add( 'WHERE A.DISCI_CODE = U1.DISCI_CODE(+)' );

    SQL.Add( 'AND A.DISCI_CODE = U2.DISCI_CODE(+)' );

    SQL.Add( 'AND A.DISCI_CODE = U3.DISCI_CODE(+)' );

    SQL.Add( 'AND A.DISCI_CODE = U4.DISCI_CODE(+)' );

    SQL.Add( 'AND A.DISCI_CODE = U5.DISCI_CODE(+)' );

    SQL.Add( 'AND A.DISCI_CODE = U6.DISCI_CODE(+)' );

    SQL.Add( 'AND A.DISCI_CODE = U7.DISCI_CODE(+)' );

    SQL.Add( 'AND A.DISCI_CODE = U8.DISCI_CODE(+)' );

    SQL.Add( 'AND A.DISCI_CODE = U9.DISCI_CODE(+)' );

    SQL.Add( 'AND A.DISCI_CODE = U10.DISCI_CODE(+)' );

    SQL.Add( 'AND A.DISCI_CODE = U11.DISCI_CODE(+)' );

    SQL.Add( 'AND A.DISCI_CODE = U12.DISCI_CODE(+)' );

    SQL.Add( 'AND A.DISCI_CODE = U13.DISCI_CODE(+)' );

    SQL.Add( 'AND A.DISCI_CODE = U14.DISCI_CODE(+)' );

    SQL.Add( 'AND A.DISCI_CODE = U15.DISCI_CODE(+)' );

    SQL.Add( 'AND A.DISCI_CODE = U16.DISCI_CODE(+)' );

    SQL.Add( 'AND A.DISCI_CODE = U17.DISCI_CODE(+)' );

    SQL.Add( 'AND A.DISCI_CODE = U18.DISCI_CODE(+)' );

    SQL.Add( 'AND A.DISCI_CODE = U19.DISCI_CODE(+)' );

    SQL.Add( 'AND A.DISCI_CODE = U20.DISCI_CODE(+)' );

    SQL.Add( 'AND A.DISCI_CODE = U21.DISCI_CODE(+)' );

    SQL.Add( 'AND A.DISCI_CODE = U22.DISCI_CODE(+)' );

    SQL.Add( 'AND A.DISCI_CODE = U23.DISCI_CODE(+)' );

    SQL.Add( 'AND A.DISCI_CODE = U24.DISCI_CODE(+)' );

    SQL.Add( 'AND A.DISCI_CODE = A6.DISCI_CODE(+)' );

    SQL.Add( 'AND A.DISCI_CODE = A10.DISCI_CODE(+)' );

    SQL.Add( 'AND A.DISCI_CODE = A15.DISCI_CODE(+)' );

    SQL.Add( 'AND A.DISCI_CODE = WT.DISCI_CODE(+)' );

    SQL.Add( 'AND A.JOB_GROUPCODE = U1.JOB_GROUPCODE(+)' );

    SQL.Add( 'AND A.JOB_GROUPCODE = U2.JOB_GROUPCODE(+)' );

    SQL.Add( 'AND A.JOB_GROUPCODE = U3.JOB_GROUPCODE(+)' );

    SQL.Add( 'AND A.JOB_GROUPCODE = U4.JOB_GROUPCODE(+)' );

    SQL.Add( 'AND A.JOB_GROUPCODE = U5.JOB_GROUPCODE(+)' );

    SQL.Add( 'AND A.JOB_GROUPCODE = U6.JOB_GROUPCODE(+)' );

    SQL.Add( 'AND A.JOB_GROUPCODE = U7.JOB_GROUPCODE(+)' );

    SQL.Add( 'AND A.JOB_GROUPCODE = U8.JOB_GROUPCODE(+)' );

    SQL.Add( 'AND A.JOB_GROUPCODE = U9.JOB_GROUPCODE(+)' );

    SQL.Add( 'AND A.JOB_GROUPCODE = U10.JOB_GROUPCODE(+)' );

    SQL.Add( 'AND A.JOB_GROUPCODE = U11.JOB_GROUPCODE(+)' );

    SQL.Add( 'AND A.JOB_GROUPCODE = U12.JOB_GROUPCODE(+)' );

    SQL.Add( 'AND A.JOB_GROUPCODE = U13.JOB_GROUPCODE(+)' );

    SQL.Add( 'AND A.JOB_GROUPCODE = U14.JOB_GROUPCODE(+)' );

    SQL.Add( 'AND A.JOB_GROUPCODE = U15.JOB_GROUPCODE(+)' );

    SQL.Add( 'AND A.JOB_GROUPCODE = U16.JOB_GROUPCODE(+)' );

    SQL.Add( 'AND A.JOB_GROUPCODE = U17.JOB_GROUPCODE(+)' );

    SQL.Add( 'AND A.JOB_GROUPCODE = U18.JOB_GROUPCODE(+)' );

    SQL.Add( 'AND A.JOB_GROUPCODE = U19.JOB_GROUPCODE(+)' );

    SQL.Add( 'AND A.JOB_GROUPCODE = U20.JOB_GROUPCODE(+)' );

    SQL.Add( 'AND A.JOB_GROUPCODE = U21.JOB_GROUPCODE(+)' );

    SQL.Add( 'AND A.JOB_GROUPCODE = U22.JOB_GROUPCODE(+)' );

    SQL.Add( 'AND A.JOB_GROUPCODE = U23.JOB_GROUPCODE(+)' );

    SQL.Add( 'AND A.JOB_GROUPCODE = U24.JOB_GROUPCODE(+)' );

    SQL.Add( 'AND A.JOB_GROUPCODE = A6.JOB_GROUPCODE(+)' );

    SQL.Add( 'AND A.JOB_GROUPCODE = A10.JOB_GROUPCODE(+)' );

    SQL.Add( 'AND A.JOB_GROUPCODE = A15.JOB_GROUPCODE(+)' );

    SQL.Add( 'AND A.JOB_GROUPCODE = WT.JOB_GROUPCODE(+)' );

    SQL.Add( 'GROUP BY A.DISCI_CODE, A.JOB_GROUPCODE, U1.CNT, U2.CNT, U3.CNT, U4.CNT, U5.CNT, U6.CNT, U7.CNT,' );

    SQL.Add( ' U8.CNT, U9.CNT, U10.CNT, U11.CNT, U12.CNT, U13.CNT, U14.CNT, U15.CNT, U16.CNT, U17.CNT, U18.CNT,' );

    SQL.Add( ' U19.CNT, U20.CNT, U21.CNT, U22.CNT, U23.CNT, U24.CNT, A6.CNT, A10.CNT, A15.CNT, WT.CNT' );

    Open;





    hnc wrote:

    > 고수님들꼭

    >

    > a필드 b필드

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

    > 2101 05101

    > 2101 05101

    > 2101 05102

    > 2102 05102

    > 2102 05103

    > 2102 05103

    >

    > 위와 같은 db에서 a , B 필드별 b필드의 count를 하고 싶습니다

    > 즉 다음과 같은 결과를 구하구 싶습니다

    >

    > a b의 카운트1 b의 카운트2

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

    > 2101 | 2 (05101의 count) | 1(05102의 count)

    > 2102 | 1 (05102의 count) | 2(05103의 count)

  • Profile
    홍길동 2000.08.24 19:07
    hnc wrote:

    > 고수님들꼭

    >

    > a필드 b필드

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

    > 2101 05101

    > 2101 05101

    > 2101 05102

    > 2102 05102

    > 2102 05103

    > 2102 05103

    >

    > 위와 같은 db에서 a , B 필드별 b필드의 count를 하고 싶습니다

    > 즉 다음과 같은 결과를 구하구 싶습니다

    >

    > a b의 카운트1 b의 카운트2

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

    > 2101 | 2 (05101의 count) | 1(05102의 count)

    > 2102 | 1 (05102의 count) | 2(05103의 count)



    위 표현식에 좀 문제가 있는것 같군요..

    b필드의 종류에 따라 열의갯수가 달라져야 하므로

    표현 할수 없습니다.(전혀는 아님)..



    group by 절을 사용하여 count를 구하고

    원하는 양식으로 한줄한줄 읽어 표현하심이..

    좋을듯 합니다.

    구지 sql로 작성하시려면 머리아프고

    작성되더라도 그리좋은 퍼포먼스는 보이지 않을

    겁니다.



    자나가는 과객이 었습니다.

  • Profile
    hnc 2000.08.24 20:46
    홍길동 wrote:

    > hnc wrote:

    > > 고수님들꼭

    > >

    > > a필드 b필드

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

    > > 2101 05101

    > > 2101 05101

    > > 2101 05102

    > > 2102 05102

    > > 2102 05103

    > > 2102 05103

    > >

    > > 위와 같은 db에서 a , B 필드별 b필드의 count를 하고 싶습니다

    > > 즉 다음과 같은 결과를 구하구 싶습니다

    > >

    > > a b의 카운트1 b의 카운트2

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

    > > 2101 | 2 (05101의 count) | 1(05102의 count)

    > > 2102 | 1 (05102의 count) | 2(05103의 count)

    >

    > 위 표현식에 좀 문제가 있는것 같군요..

    > b필드의 종류에 따라 열의갯수가 달라져야 하므로

    > 표현 할수 없습니다.(전혀는 아님)..

    >

    > group by 절을 사용하여 count를 구하고

    > 원하는 양식으로 한줄한줄 읽어 표현하심이..

    > 좋을듯 합니다.

    > 구지 sql로 작성하시려면 머리아프고

    > 작성되더라도 그리좋은 퍼포먼스는 보이지 않을

    > 겁니다.

    >

    > 자나가는 과객이 었습니다.