我需要在Oracle中为以下情况编写查询(实际上这是一个示例表) This is DB Table structure
如果表格包含所选Item_id的两组日期,则将基于类型创建日期,另一种为交易日期。 (此处为类型1-创建日期,类型2为交易日期)
我的最终结果如下: Output
请任何人帮助我在oracle中为这种情况编写查询(我是oracle的新手。据我所知,我们应该使用“ ListAgg”来实现此输出。)
预先感谢
答案 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>