Oracle 查询 -ListAgg
Posted
技术标签:
【中文标题】Oracle 查询 -ListAgg【英文标题】:Oracle query -ListAgg 【发布时间】:2019-04-07 16:19:19 【问题描述】:我需要在 Oracle 中为以下情况编写查询(实际上这是一个示例表) This is DB Table structure
如果表中包含选定 Item_id 的两组日期,则根据类型,一个将创建日期,另一个是交易日期。 (此处类型 1 - 创建日期和类型 2 是交易日期)
我的最终结果如下: Output
请任何人帮助我在 oracle 中为这种情况编写查询(我是 oracle 的新手。据我所知,我们应该使用“ListAgg”来实现此输出。)
提前致谢
【问题讨论】:
你知道错了。我只查看了所需的输出,但其中没有任何看起来像 listagg 的内容。 【参考方案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>
【讨论】:
以上是关于Oracle 查询 -ListAgg的主要内容,如果未能解决你的问题,请参考以下文章