ハロの外部記憶インターフェイス

そろそろ覚える努力が必要かも…

行データをカンマ区切り表示

ORACLE, MYSQLの場合

GROUP_CONCATを使用する。

SELECT GROUP_CONCAT(CLM_NAME) FROM TABLENAME;
  • テスト用データ差癖
create table test1 (clm1 int, clm2 text(500));
insert into test1 values (1, 'abc');
insert into test1 values (1, 'def');
insert into test1 values (2, 'ghj');
insert into test1 values (2, 'ttt');
select clm1, group_concat(clm2) from test1 group by clm1;
+------+--------------------+
| clm1 | group_concat(clm2) |
+------+--------------------+
|    1 | abc,def            |
|    2 | ghj,ttt            |
+------+--------------------+
2 rows in set (0.00 sec)

MS SQL Server の場合

FOR XML PATH('')を使用

SELECT
   NAME
  ,(
    SELECT
      NAME + ','
    FROM
     USERS
    WHERE
      USER_GROUP_ID = GROUPS.ID
    FOR XML PATH('')
  ) AS USER_NAMES
FROM
  GROUPS