Oracle查询-ListAgg

时间:2019-04-07 16:19:19

标签: sql oracle

我需要在Oracle中为以下情况编写查询(实际上这是一个示例表) This is DB Table structure

如果表格包含所选Item_id的两组日期,则将基于类型创建日期,另一种为交易日期。 (此处为类型1-创建日期,类型2为交易日期)

我的最终结果如下: Output

请任何人帮助我在oracle中为这种情况编写查询(我是oracle的新手。据我所知,我们应该使用“ ListAgg”来实现此输出。)

预先感谢

1 个答案:

答案 0 :(得分:1)

据我所知, listagg 没有什么可做的;普通骨料就可以了。

SQL> alter session set nls_date_format = 'dd/mm/yyyy';

Session altered.

SQL> with test (cat_id, type, cdate, item_id) as
  2    (select 1, 1, date '2019-04-09', 46 from dual union all
  3     select 2, 1, date '2019-03-05', 47 from dual union all
  4     select 3, 2, date '2019-04-10', 46 from dual union all
  5     select 4, 2, date '2019-04-06', 52 from dual
  6    )
  7  select item_id,
  8    min(case when type = 1 then cdate end) created_date,
  9    max(case when type = 2 then cdate end) transaction_date
 10  from test
 11  group by item_id
 12  order by item_id;

   ITEM_ID CREATED_DA TRANSACTIO
---------- ---------- ----------
        46 09/04/2019 10/04/2019
        47 05/03/2019
        52            06/04/2019

SQL>