如何连接作为单个查询结果获得的多个行,并在每个值

时间:2017-06-12 05:33:16

标签: sql oracle

我有一个表为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获得此功能?

1 个答案:

答案 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