【发布时间】:2011-04-13 20:39:38
【问题描述】:
我正在使用 Sybase ASE 数据库。
我有两个看起来像的表:
表Shops:
---------------------
| ShopName | ShopID |
---------------------
| Sweetie | 1 |
| Candie | 2 |
| Sugarie | 3 |
---------------------
表Sweets:
----------------------
| SweetName | ShopID |
----------------------
| lolly | 1 |
| redlolly | 1 |
| greenloly | 1 |
| taffy | 2 |
| redtaffy | 2 |
| bluetaffy | 2 |
| choco | 3 |
| mintchoco | 3 |
| milkchoco | 3 |
| gummybees | 3 |
----------------------
我想编写一个查询,它会生成如下所示的结果:
-----------------------------------------------------
| ShopName | Sweets |
-----------------------------------------------------
| Sweetie | lolly, redlolly, greenlolly |
| Candie | taffy, redtaffy, bluetaffy |
| Sugarie | choco, mintchoco, milkchoco, gummybees |
-----------------------------------------------------
我该怎么做呢?我需要这个用于 Sybase ASE 数据库。我尝试了LIST() 函数,但我得到了一个错误。我查看了它的文档,发现这个功能在 ASE 版本中不可用。
这可能意味着将涉及一些“动态sql”(我不太清楚这意味着什么)。有人可以帮忙吗?
我可能希望在结果表中使用ShopId 而不是ShopName...我还不确定。我想这不会有太大的不同。此外,Sweets 结果列中的尾随逗号不是问题。我想要的只是一个非空白分隔符。
【问题讨论】:
-
嗯听起来你想要一个字符串聚合函数。我不确定哪些数据库本身可以做到这一点,但我看到有时会看到用户定义的函数(自然会从一个 dmb 到另一个不同)。你用的是什么数据库?
-
list()给出了什么错误?并不是说我可以帮助解决 Sybase 问题,而是其他可以识别错误消息的人。 -
错误是没有找到
LIST()函数,这是正确的:我使用的是 Sybase ASE 版本,它没有这个函数(它的文档是这样说的)。我猜这可能需要一些 T-SQL mumbo jumbo,但我不知道该怎么做.. -
函数
LIST()仅适用于Sybase IQ,不适用于Sybase ASE。
标签: sql join concatenation sap-ase