合并记录和列

时间:2017-06-13 13:33:24

标签: sql merge sybase

表A中的数据:

id desc
1  huba
1  blub
3  foo
4  bar

我想要

id desc
1  huba, blub
3  foo
4  bar

因此应该合并具有相同id的记录并连接desc。 不幸的是我不能使用字符串或concat。如果我尝试使用这些功能,我会收到错误。

Sybase版本: Sybase版本:Adaptive Server Enterprise / 15.5 / EBF 19902 SMP ESD#5.1 / P / x86_64 / Enterprise Linux / asear155 / 2594/64-bit / FBO / Wed Jun 6 01:20:27 2012

1 个答案:

答案 0 :(得分:0)

Sybase ASE没有类似于list(),group_concat()等的任何函数。

虽然Sybase ASE确实提供了一些XML支持,但它不支持'for xml / path()'构造。

虽然可以在ASE 16中创建一个时髦的解决方法(使用表@variable和用户定义的函数)...但是你没有运行ASE 16。

最终结果是你需要编写某种循环结构来完成你想要的东西,例如,循环遍历表中行的游标。

注意:我必须考虑'合并'的想法,但是因为你运行ASE 15.5并且在ASE 15.7之前'合并'不可用......我会把这个想法放在后面现在

ps - 好的,单一查询解决方案,但它涉及使用应用程序上下文函数(ACF)(例如,get_appcontext(),set_appcontext());但这是一个非常非常非常混乱的解决方案......