我找到了一种将不同行的字符串聚合到sybase ASE 15中的单行的方法。像这样:
id | Name Result: id | Names
-- - ---- -- - -----
1 | Matt 1 | Matt, Rocks
1 | Rocks 2 | Stylus
2 | Stylus
类似于T-SQL中的FOR XML PATH。
谢谢!
答案 0 :(得分:3)
Sybase ASE没有任何字符串聚合函数,如list()
或group_concat()
;虽然对FOR XML
有一些支持,但它不包括对PATH
选项/功能的支持。
假设您可以附加未知/可变数量的行,您唯一的(ASE 15)T-SQL选项将是基于游标的解决方案。
如果您发现自己使用ASE 16,则可以编写用户定义的函数(UDF)来完成任务,例如:emulate group_concat() in ASE 16
答案 1 :(得分:0)
写在下面的查询:- 从表中选择 id, cursorfunc(id)
然后在上面查询中使用的光标下方创建 DECLARE ListCurs CURSOR FOR
//查询取名字 从表中选择名称,其中 id=@id
打开列表Curs 选择 @Status = 0 当@Status = 0 开始 FETCH ListCurs INTO @name
IF @Status = 0
BEGIN
SELECT @res = CASE WHEN @res IS NULL THEN '' ELSE @res + '& ' END + @name
END
结束 关闭列表Curs 返回 (@res)
答案 2 :(得分:-3)
您可以尝试以下方法:
select id,list(Names,',' order by id) from TableName a group by id