首页 > 解决方案 > 我们如何在oracle中将多行数据作为单行获取

问题描述

在此处输入图像描述 在图像中,我给出了表结构和示例数据,并且我需要如上所述的输出结果

标签: oracle

解决方案


使用您提供的示例数据(第 1 - 8 行),这将返回所需的结果。它是否适用于所有其他情况,我不知道,因为这个问题缺乏很多信息,所以 YMMV。

SQL> with employee (id, name, type, visit_date) as
  2    (select 1, 'Mohan', '01', date '2010-09-09' from dual union all
  3     select 1, 'Mohan', '02', date '2010-09-10' from dual union all
  4     --
  5     select 1, 'Gani' , '01', date '2010-09-01' from dual union all
  6     select 1, 'Gani' , '01', date '2010-09-02' from dual union all
  7     select 1, 'Gani' , '01', date '2010-09-03' from dual
  8    ),
  9  --
 10  type1 as
 11    (select id, name, visit_date
 12     from employee
 13     where type = '01'
 14    ),
 15  type2 as
 16    (select id, name, visit_date
 17     from employee
 18     where type = '02'
 19    )
 20  select
 21    a.id,
 22    a.name,
 23    a.visit_date type1date,
 24    b.visit_date type2date
 25  from type1 a left join type2 b on a.id = b.id and a.name = b.name
 26  order by a.id, a.name desc, a.visit_date;

        ID NAME  TYPE1DATE  TYPE2DATE
---------- ----- ---------- ----------
         1 Mohan 09/09/2010 10/09/2010
         1 Gani  01/09/2010
         1 Gani  02/09/2010
         1 Gani  03/09/2010

SQL>

推荐阅读