Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL将所有查询行连接到一行中_Sql_Oracle_Oracle11g - Fatal编程技术网

SQL将所有查询行连接到一行中

SQL将所有查询行连接到一行中,sql,oracle,oracle11g,Sql,Oracle,Oracle11g,我已经看到了以下问题,但无法让它们为我所寻找的工作 我正在使用Oracle,希望解决方案不包含pl Sql 我试图让查询看起来像这样,每行可能有一行新行,并用|或逗号分隔: 数据集: question_id element_message date -------------------------------------------- 1 hello 10/10/19 2 goodbye

我已经看到了以下问题,但无法让它们为我所寻找的工作

我正在使用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的工具,在触发电子邮件方面有逐行限制。因此,这是一种每天为所有行触发一封电子邮件的黑客行为。

如果希望每行打印在不同的行上,为什么需要一行查询

如果您只是想运行一个查询,返回没有标题或页面分隔符的数据,请使用以下方法:

set pagesize 0
select  question_id || '|' || element_message || '|' || date from your_table;

如果要将每一行打印在不同的行上,为什么要使用单行查询

如果您只是想运行一个查询,返回没有标题或页面分隔符的数据,请使用以下方法:

set pagesize 0
select  question_id || '|' || element_message || '|' || date from your_table;

这就是你要找的吗

SELECT CONCAT(question_id, ' | ', element_message, ' | ', date) FROM Data

这就是你要找的吗

SELECT CONCAT(question_id, ' | ', element_message, ' | ', date) FROM Data

SQL Server解决方案:您可以使用
自连接
解决此问题,如下所示:

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)
选择前1个CONCAT(d1.question_id,“|”,d1.element_message,“|”,d1.date,
“|”d2.question_id“|”,d2.element_message“|”,d2.date)
从数据d1连接数据d2 on(d1.question_id
SQL Server解决方案:您可以使用
自连接
解决此问题,如下所示:

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)
选择前1个CONCAT(d1.question_id,“|”,d1.element_message,“|”,d1.date,
“|”d2.question_id“|”,d2.element_message“|”,d2.date)
从数据d1连接数据d2 on(d1.question_id
为什么要将不相关的数据放在一行中?我们正在使用一个名为Geneos的工具,它只能逐行呈现数据。您可以修改共享链接中某个答案中的
Listag
查询,并使用分隔符作为分隔每行的
chr(10)
(表示新行),而不是逗号。但是,请注意,连接后的总长度不能超过4000个字符。我们还讨论了其他聚合技术来实现同样的目的,这些技术可能对您有用。为什么要将不相关的数据放在一行中?我们正在使用一个名为Geneos的工具,它只能逐行呈现数据。您可以修改共享链接中某个答案中的
listag
查询,并使用分隔符为
chr(10)
(表示换行符),用于分隔每一行而不是逗号。但是,请注意,连接后的总长度不能超过4000个字符。为了达到同样的效果,还讨论了其他聚合技术,这些技术可能对您有用。问题标记为Oracle,因此SQL server解决方案对OP没有用处。您可以使用Oracle的行数。问题标记为Oracle,因此,SQL server解决方案对OP没有用处。您可以对oracle使用row num。oracle中的
CONCAT
函数只能使用2个参数。oracle中的
CONCAT
函数只能使用2个参数。