뉨덜뉨덜
10
2019-06-05 18:02:06 작성 2019-06-05 18:03:15 수정됨
0
111

LISTAGG 질문있습니다.


아래 테이블과 같은 검사 결과를

테이블명 : TMP1

IDINSP_SEQJUDGEDEFECTNAME
A1NGDF1
A1NGDF2
A1NOKNOK1
A2NOKNOK2
A2NOKNOK3
B1NOKNOK4


아래처럼 ID, INSP_SEQ, JUDGE 별로  ROW 수 , DEFECTNAME을 붙여서 나타내려고 합니다. 

IDINSP_SEQJUDGECOUNTINSP_DETAIL
A1NG2

DF1; DF2;

A1NOK1NOK1;
A2NOK2NOK2; NOK3;
B1NOK1NOK4;


해서 아래와 같이 쿼리문을 짰는데요.


 SELECT T1.ID 

        , T1.INSP_SEQ

        , T1.JUDGE

        , COUNT(*)

        , LISTAGG(T1.DEFECTNAME , ';'||CHR(13)||CHR(10)) WITHIN GROUP (ORDER BY T1.ID ,  T1.INSP_SEQ, T1.JUDGE ) AS INSP_DETAIL

  FROM TMP1 T1

   GROUP BY T1.ID , T1.INSP_SEQ, T1.JUDGE



예상과는 다르게 INSP_DETAIL 컬럼이 비어서 나옵니다.

IDINSP_SEQJUDGECOUNTINSP_DETAIL
A1NG2


A1NOK1
A2NOK2
B1NOK1


SQL 쿼리 밑부분의 GROUP BY 절이 문제인가 싶어서 노란색으로 하이라이트 처리된 부분을 제거하고 실행시키면 

ORA-00937 단일 그룹의 그룹 함수가 아닙니다. 가 나오며 에러 표시가 쿼리의 T1.ID 부분에 나옵니다.

SELECT T1.ID

                  ....


어떻게 수정해야할지 감이 안잡히네요... 부탁드립니다.

0
0
  • 답변 0

  • 로그인을 하시면 답변을 등록할 수 있습니다.