sql - 如何从 PLSQL 中的列生成列表?
问题描述
我创建一个查询以将日期生成为行,
SELECT ltrim(TO_CHAR(MONTH,'mm-yyyy'),'0') AS process_date
FROM
(
select add_months (trunc (to_date('09/01/2019','dd/mm/yyyy'), 'MM'), 1*Level -1)
Month
FROM Dual
CONNECT BY Level <= MONTHS_BETWEEN(to_date('09/01/2019','dd/mm/yyyy'), to_date('09/01/2018','dd/mm/yyyy')) + 1
order by month
)
结果是
PROCESS_DATE|
------------|
1-2019 |
2-2019 |
3-2019 |
4-2019 |
5-2019 |
6-2019 |
7-2019 |
8-2019 |
9-2019 |
10-2019 |
11-2019 |
12-2019 |
1-2020 |
我需要你的帮助来创建一个 plsql 函数来将这些行转换为一个列表,比如
[1-2019,2-2019,3-2019,...]
解决方案
SELECT LISTAGG(process_date, ',') WITHIN GROUP (ORDER BY process_date)
FROM (SELECT LTRIM (TO_CHAR (month, 'mm-yyyy'), '0') AS process_date
FROM ( SELECT ADD_MONTHS (
TRUNC (TO_DATE ('09/01/2019', 'dd/mm/yyyy'),
'MM'),
1 * LEVEL - 1)
month
FROM DUAL
CONNECT BY LEVEL <=
MONTHS_BETWEEN (
TO_DATE ('09/01/2019', 'dd/mm/yyyy'),
TO_DATE ('09/01/2018', 'dd/mm/yyyy'))
+ 1
ORDER BY month))
推荐阅读
- firebase - 防止在firestore中通过电子邮件登录创建用户帐户
- postgresql - macOS 中的 Postgres 和 JPA
- spring-mvc - Spring Security 静态资源和 webjars 问题(Spring Boot 2)
- python - 具有多个索引的数据帧乘法
- firebase - Firebase 可调用函数:预检响应无效
- spring-boot - 在为电子邮件服务创建模板时在 thymeleaf 中加载外部 CSS 的问题
- php - PDO 语句,引号存储为?
- php - 在 PHP 中创建垂直表
- apache - Apache2:ErrorLogFormat 没有影响
- python - 画布文本更新 - Python3 Tkinter