[질문] 로직이 어떻게 되는지 궁금하네요.

안녕하세요.


 


아 이런건 어떻게 처리해할지 궁금해서 질문드립니다.


 


인터널 테이블에 담긴 내용중에 코드값이 있습니다.


 


001


001


001


002


002


.


.


.


 


이런씩으로 예상값이 들어있습니다.


 


그래서 각 코드값의 카운터(총 갯수)를 알아서 다른 인터널 테이블에 담고 싶은데요…


 


코드값 : 001   갯수 : 3


코드값 : 002   갯수 : 2


 


이런형태로 담을 려고 합니다……어떻게 해야할지 궁금하네요.


 


3 Comments

avatar

궁극적으로 구하려는 값이 코드별 카운트 갯수라면 최초에 select문에서 왜 코드값만 담았는지 이해가 잘 안되네요^^

select code count( * )

into table itab

whre  ….

group by code.

이런 식으로 하면 굳이 테이블을 두개 선언하지 않아도 될텐데요..

 

어쩔 수 없이 코드만 들어있는 인터널 테이블을 통해서 두 번째 테이블에 담아야 한다면

여러 가지 방법이 있겠지만 간단하게 한 가지 생각해 보자면

data: l_count type i 와 같이 임시변수를 선언하시고

loop at itab.
  l_count = l_count + 1.
  at end of code.
    move itab-code to it_count-code.
    it_count-count = l_count.
    append it_count. clear l_count.
  endat.
endloop.

 

뭐 이런 식으로 계산하는 방법이 있겠네요.

물론 위에서 itab은 code만 담은 첫번째 테이블이고

it_count는 code필드와 count필드가 선언된 두번째 테이블로 가정한 것입니다.

avatar

밥먹기 전에 빨리 올리고 갔는데 다시 와서 보니까 코드별 카운트 갯수 뿐 아니라

인터널 테이블 안에 스트링 형태로 한 번에 담고자 한게 질문이었나 보네요.

출력을 위해서 그렇게 하는 것이라면 ‘코드값:’ 이나 ‘갯수:’ 같은 문자열은  출력할때 직접 뿌려주는 게 낫다고 생각되지만

일단 원하시는 형태로 인터널 테이블에 담고자 한다면

위에 제가 작성한 부분 중에서   

    move itab-code to it_count-code.
    it_count-count = l_count. 

대신에

    concatenate ‘코드값: ‘ itab-code ‘갯수 :’ l_count into it_count-string separated by space.

로 고쳐주면 될 것 같습니다.

 

대신에 l_count를 위에서와 같이 type i로 선언하면 concatenate 구문에서 에러 발생하니까

문자 타입 등으로 변환해 주셔야 되겠네요

 

 

avatar

한번에 계산할수 있는 방법은 없는거 같고 수~지 님의 답변처럼

at end로 해서 로직으로 처리해야될거 같네요~

Leave a Reply