복붙노트

[SQL] MySQL의에서 GROUP_CONCAT 유사한 오라클의 모든 기능이 있습니까? [복제]

SQL

MySQL의에서 GROUP_CONCAT 유사한 오라클의 모든 기능이 있습니까? [복제]

내 입력은이 방법에 있습니다.

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

O / P는 : 같은 수 있어야

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

나는 DB 수준에서 발사 할 수있는 쿼리를 원한다. 나는 여러 가지 방법을 시도하지만,이를 만들 수 없습니다했습니다 ...

해결법

  1. ==============================

    1.11g 이상 : 사용 listagg :

    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입니다 - 자세한 내용은 여기를 참조하십시오.

    MySQL은 :

    SELECT col1, GROUP_CONCAT(col2) FROM table_name GROUP BY col1
    
  2. from https://stackoverflow.com/questions/16771086/is-there-any-function-in-oracle-similar-to-group-concat-in-mysql by cc-by-sa and MIT license