我有一个表为admin_emp_leave_header,其中包含一个START_DATE列。
假设我使用以下查询将这些日期视为:
select START_DATE sd
from admin_emp_leave_header;
我得到以下结果
SD
--------
01-01-2017
02-01-2017
03-01-2017
04-01-2017
但我希望输出为
SD
----------------------------------------------------
'01-01-2017','02-01-2017','03-01-2017','04-01-2017'
如何使用oracle获得此功能?
答案 0 :(得分:1)
您可以使用DATE
函数将TO_CHAR
转换为文本,然后使用LISTAGG
函数连接这些字符串:
SELECT LISTAGG(TO_CHAR(start_date,'''MM-DD-YYYY'''),',') WITHIN GROUP (ORDER BY start_date)
FROM admin_emp_leave_header
如果您还需要使用相同格式获取当前日期,以防上一个查询未返回任何记录,则只需使用NVL
:
SELECT NVL(LISTAGG(TO_CHAR(start_date,'''MM-DD-YYYY'''),',') WITHIN GROUP (ORDER BY start_date),TO_CHAR(SYSDATE,'''MM-DD-YYYY'''))
FROM admin_emp_leave_header