SQL Query使用CASE并组合行

时间:2017-06-02 16:06:14

标签: sql xml db2 xquery

这是SQL代码中的当前输出:

Group     | USERLIST
Region 1  | <Users><USERID>ID1</USERID><USERID>ID2</USERID></Users>
Region 1  | <Users><USERID>ID3</USERID></Users>
Region 2  | <Users><USERID>ID4</USERID></Users>

我希望输出结果如下:

    Group     | USERLIST
Region 1  | <Users><USERID>ID1</USERID><USERID>ID2</USERID><USERID>ID3</USERID></Users>
Region 2  | <Users><USERID>ID4</USERID></Users>

这是我正在使用的当前代码。

SELECT CASE
  WHEN _ID LIKE '%REG1%' THEN 'Region 1'
  WHEN _ID LIKE '%REG2%' THEN 'Region 2'
  WHEN _ID LIKE '%REG3%' THEN 'Region 3'
  WHEN _ID LIKE '%REG4%' THEN 'Region 4'
  ELSE NULL
 END AS "Group"
 ,XMLSERIALIZE( 
  CONTENT XMLELEMENT( 
   NAME "Users",
   XMLAGG( 
    XMLELEMENT(NAME "USERID", _USERID) 
   )
  ) 
  AS CLOB(30K)
 ) AS "USERLIST"

使用LIKE运算符的原因是因为要比较的数据的格式为xxxxREG#xxx。其中x代表数据的差异。有没有人知道如何将重复的组合成一行?

0 个答案:

没有答案