【问题标题】:Concatenate rows in select query (in Advantage Data Architect)在选择查询中连接行(在 Advantage Data Architect 中)
【发布时间】:2014-12-22 10:57:49
【问题描述】:

如何在选择查询中连接行? (在 Advantage Data Architect 中)

我尝试运行以下脚本:

第一个脚本:

declare @str string;
set @str = '';
select @str = @str + field_1 from my_table1

但我得到的结果是所有行都包含“false”,如下图所示:

第二个脚本:

declare @str string;
select @str = coalesce(@str + ', ','') + field_1 from my_table1

这一次,所有行都是空的(注意:“my_table1”中的字段不为空)。

图片:

我尝试在 Internet 上搜索 Advantage Data Architect 的解决方案,但找不到解决方案。

【问题讨论】:

  • 你的表的定义是什么?特别是您要查询的字段是什么数据类型?
  • 你想要达到什么目的?请清楚说明您拥有哪些数据以及输出应该是什么样子。
  • @JensMühlenhoff 很抱歉,答案很长。谢谢您的回答。我想连接选择查询一列的结果。结果列的类型是char。总之,我想从我的列的选择查询中获取包含结果的字符串,并用任何符号(',')分隔。例如 - 'result1, result2, result3 ...'

标签: sql aggregate-functions string-concatenation advantage-database-server


【解决方案1】:

我假设您想要 MySQL 中的 GROUP_CONCAT 或 Oracle / Postgres 中的 string_agg

一般算法是这样的:

DECLARE @S STRING;

DECLARE CURSOR C AS 
SELECT
  CONVERT(field_1, SQL_CHAR) AS "val"
FROM 
  my_table1;

OPEN C;

WHILE FETCH C do
  -- Since @S is NULL for the first row this will ensure 
  -- that the result does not start with the separator.
  @S = COALESCE(@S + ', ' + C.val, C.val);
END;

CLOSE C;

SELECT @S;

A general function can be found on the ADS forum.

PS:这是splitting a string into separate rows的反面。

【讨论】:

  • 谢谢你的例子。我认为这个解决方案对我有好处。
猜你喜欢
  • 1970-01-01
  • 2012-11-22
  • 1970-01-01
  • 1970-01-01
  • 2011-06-16
  • 2021-11-09
  • 1970-01-01
  • 2017-08-29
  • 1970-01-01
相关资源
最近更新 更多