programing

두 개의 열이 있는 LISTAGG 함수

showcode 2023. 6. 19. 21:46
반응형

두 개의 열이 있는 LISTAGG 함수

이런 테이블이 하나 있습니다(리포트)

--------------------------------------------------
|  user_id |  Department | Position  | Record_id |
--------------------------------------------------
|  1       |  Science    | Professor |  1001     |
|  1       |  Maths      |           |  1002     |
|  1       |  History    | Teacher   |  1003     |
|  2       |  Science    | Professor |  1004     |
|  2       |  Chemistry  | Assistant |  1005     |
--------------------------------------------------

저는 다음과 같은 결과를 원합니다.

   ---------------------------------------------------------
   | user_id  |  Department+Position                       |
   ---------------------------------------------------------
   |  1       | Science,Professor;Maths, ; History,Teacher |
   |  2       | Science, Professor; Chemistry, Assistant   |
   ---------------------------------------------------------

즉, 결과 표에서 볼 수 있듯이 빈 공간을 '로 보존해야 합니다.이제 LISTAGG 함수를 사용하는 방법을 알고 있지만 한 열에 대해서만 사용할 수 있습니다.하지만 동시에 두 개의 열에 대해 어떻게 해야 하는지 정확히 알 수가 없습니다.제 질문은 다음과 같습니다.

SELECT user_id, LISTAGG(department, ';') WITHIN GROUP (ORDER BY record_id)
FROM report

잘 부탁드립니다 :-)

이를 위해서는 집계 내에서 연결을 현명하게 사용해야 합니다.

select user_id
     , listagg(department || ',' || coalesce(position, ' '), '; ')
        within group ( order by record_id )
  from report
 group by user_id

즉, 다음의 농도를 집계합니다.department쉼표와 함께position및 대체positionNULL인 경우 공백이 있어야 합니다.

언급URL : https://stackoverflow.com/questions/13876802/listagg-function-with-two-columns

반응형