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