1
我正在使用KEEP (DENSE_RANK LAST)
分析函數獲取組中的最後一個值,並且我還使用LISTAGG
函數根據先前的結果生成列表。奇怪的是,在列表的末尾還有一個額外的分隔符。有誰知道爲什麼,或者這是Oracle中的一個錯誤?Oracle 1.2 ListAgg with keep(dense_rank)在列表中給出了額外的逗號
下面是一個簡化的示範:
with mydata as (
select to_date('4/1/2015','mm/dd/yyyy') next_due, 51528 cust_id from dual
union all select to_date('4/1/2015','mm/dd/yyyy'), 5364 from dual
union all select to_date('4/3/2015','mm/dd/yyyy'), 51468 from dual
), i1 as (
select cust_id,
max(next_due) keep (dense_rank last order by next_due) max_date
from mydata
group by cust_id
)
select max_date,
listagg(cust_id||',') within group (order by 1) maxdate_list
from i1
group by max_date
,其結果是
MAX_DATE MAXDATE_LIST
---------- ---------------
04/01/2015 51528,5364,
04/03/2015 51468,
通知在每個MAXDATE_LIST
的端部的不希望的逗號?同樣的事情也會發生,如果我切換到FIRST_VALUE() OVER (PARTITION...)
這很簡單!咄!感謝斯坦 –