如何简洁地处理作为单个查询结果获得的多行,并在每个值前后附加单引号



我有一个表作为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'

我如何使用预言机获得它?

您可以使用

TO_CHAR 函数将DATE转换为文本,然后使用 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

最新更新