달력

11

« 2024/11 »

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30

'group by concatenate'에 해당되는 글 1

  1. 2011.11.08 열->줄 변환
2011. 11. 8. 19:39

열->줄 변환 Work/PostgreSQL2011. 11. 8. 19:39

개요.
정규화 되어 있는 Data를 컴마(,) 혹은 특정 구분자로 이루어진 비정규형 Data로 표현하는 방법에 대한 DBMS별 Solution.

Example.

CREATE TABLE T_TEST (ID_KIPI varchar2(32), INVENTOR varchar2(64));
 
INSERT INTO T_TEST VALUES ('EP000000004A1_19781220', '박상가');
INSERT INTO T_TEST VALUES ('EP000000004A1_19781220', '박상나');
INSERT INTO T_TEST VALUES ('EP000000004A1_19781220', '박상다');
INSERT INTO T_TEST VALUES ('EP000000004A1_19781220', '박상라');

 


Solution 1. Oracle (10g)

SELECT ID_KIPI, WM_CONCAT(INVENTOR)
FROM T_TEST
GROUP BY ID_KIPI;
-- 11g에서는 listagg도 지원한다.

 
Solution 2. SQL Server

SELECT distinct
       ID_KIPI
      ,STUFF(
                (
                    SELECT ', ' + b.INVENTOR 
                    FROM T_TEST b 
                    where a.ID_KIPI = b.ID_KIPI 
                    FOR XML PATH('')
                ),1, 2, ''
            ) AS INVENTOR
FROM T_TEST a

 
Solution 3-1. PostgreSQL (9.0 이하)

SELECT ID_KIPI, array_to_string(array_agg(INVENTOR),',') 
FROM T_TEST 
GROUP BY ID_KIPI;

 
Solution 3-2. PostgreSQL (9.1 이상)

SELECT ID_KIPI, string_agg(INVENTOR,',' order by INVENTOR) 
FROM T_TEST 
GROUP BY ID_KIPI; 




:
Posted by Elick