用于从表中检索特定行的复杂SQL查询

时间:2011-09-21 04:42:26

标签: sql database select db2

我有2个表emp和emp_desc

emp表包含empidempnameeempaddress

emp_desc表包含empidempdescseqnoempdesc列(对于一个empid,我们有多个empdesc - 它不是固定的)

表1

empid  ename   eaddress
 1      ABS      PPPPPP
 2      DSC      CCCCC

表2

empid  empdescseqno  empdesc
  1      1              JJJJJ
  1      2              KKKKKK
  1      3              LLLLLL
  2      1              MMMMMM
  2      2              NNNNNN

我想检索empid,empname和empdesc加入这两个表。但是,在结果表中,对应于一个员工的所有empdesc应该连接在一个字符串中。

也就是说,结果应如下所示:

empid    empname    empdesc
  1       ABS        JJJJJ KKKKKK LLLLLL
  2       DSC        MMMMMM NNNNNN

我需要编写一个通用的SELECT查询,从而得到上面的最终表格。

2 个答案:

答案 0 :(得分:0)

如果您正在使用MYSQL数据库,那么您可以使用此查询。

SELECT empid, ename, GROUP_CONCAT(empdesc ORDER BY empdescseqno SEPARATOR ' ') as empdesc FROM employee emp 
INNER JOIN employee_map emp_map ON emp.empid = emp_map.empid 
GROUP BY emp.empid;

这将根据需要提供结果。

我认为你想要DB2,然后你需要在DB2中找到替代函数

答案 1 :(得分:0)

将Mayank的答案复制到评论

select e.empid, substr( xmlserialize( xmlagg( xmltext( concat( ', ', empdesc ) ) ) as varchar( 1024 ) ), 3 ) from empdesc desc , emp e where e.empid =desc.empid group by e.empid

感谢Dan指出旧链接。