我已经看到以下问题,但无法让它们满足我的需求。
How can multiple rows be concatenated into one in Oracle without creating a stored procedure?
SQL Query to concatenate column values from multiple rows in Oracle
我正在使用Oracle,希望该解决方案没有pl-Sql。
我正在尝试使查询看起来像这样,每行可能有一个新行,并以|分隔。或逗号:
数据集:
question_id element_message date
--------------------------------------------
1 hello 10/10/19
2 goodbye 11/11/19
所需的一行查询结果:
1 | hello | 10/10/19 --new line added in query(if possible)
2 | goodbye| 11/11/19
如果无法在查询中添加新行:
所需结果:
1 | hello | 10/10/19 | 2 | goodbye| 11/11/19 |
*编辑 为了澄清为什么我使用这个。我正在使用名为Geneos的工具,它在触发电子邮件方面具有逐行限制。因此,这是一种骇客行为,可每天触发所有行的一封电子邮件。
答案 0 :(得分:1)
如果希望将每一行打印在不同的行上,为什么要查询一行?
如果您只想运行一个查询,该查询返回没有标题或页面分隔符的数据,请使用以下命令:
set pagesize 0
select question_id || '|' || element_message || '|' || date from your_table;
答案 1 :(得分:1)
SQL Server解决方案:您可以使用 self join
来解决它,如下所示:
select top 1 CONCAT(d1.question_id, ' | ', d1.element_message, ' | ', d1.date,
'|' d2.question_id, ' | ', d2.element_message, ' | ', d2.date)
from data d1 join data d2 on (d1.question_id < d2.question_id and)
答案 2 :(得分:0)
这是您要找的吗?
SELECT CONCAT(question_id, ' | ', element_message, ' | ', date) FROM Data