programing

mysql의 group_concat과 유사한 함수가 oracle에 있나요?

easyjava 2023. 2. 23. 23:09
반응형

mysql의 group_concat과 유사한 함수가 oracle에 있나요?

제 의견은 이렇습니다.

col1   col2
1      a
1      b
2      c
2      d
2      e

O/P: 다음과 같아야 함

col1    col2
1       a,b
2       c,d,e

DB 레벨에서 실행할 수 있는 쿼리를 원합니다.여러 가지 방법을 시도해 봤지만 알아내지 못했어요

11g 이상:listagg 사용:

SELECT 
    col1,
    LISTAGG(col2, ', ') WITHIN GROUP (ORDER BY col2) "names"
FROM table_x
GROUP BY col1

10g 이하:한 가지 방법은 다음과 같은 함수를 사용하는 것입니다.

CREATE OR REPLACE FUNCTION get_comma_separated_value (input_val  in  number)
  RETURN VARCHAR2
IS
  return_text  VARCHAR2(10000) := NULL;
BEGIN
  FOR x IN (SELECT col2 FROM table_name WHERE col1 = input_val) LOOP
    return_text := return_text || ',' || x.col2 ;
  END LOOP;
  RETURN LTRIM(return_text, ',');
END;
/

기능을 사용하려면:

select col1, get_comma_separated_value(col1) from table_name

주의: (지원되지 않는) 기능이 있습니다.WM_CONCAT특정 이전 버전의 Oracle에서 사용할 수 있으므로 도움이 될 수 있습니다. 자세한 내용은 여기를 참조하십시오.

MySQL의 경우:

SELECT col1, GROUP_CONCAT(col2) FROM table_name GROUP BY col1

언급URL : https://stackoverflow.com/questions/16771086/is-there-any-function-in-oracle-similar-to-group-concat-in-mysql

반응형