寻找一个查询在Informix SQL,将模拟MySQL group_concat 功能。

什么MySQL group_concat 不是它创建了一个列举的所有成员在小组。

使用的数据如下:

orderid:itemName:price
      1:Paper   :10
      1:Pen     :5
      2:Sugar   :15

和下面的查询:

select group_concat(itemName), sum(price)
from order_details
group by orderid

会产生:

items    :price
Paper,Pen:15
Sugar    :15

什么是最有效的方式来实现这Informix?我们一定要使用存储程序?

有帮助吗?

解决方案

你要定义一个用户定义的汇总这样做。那有四个部分四个职能(搜索 建立汇总ID12.10信息中心):

  1. 初始化(INIT)
  2. 迭代(ITER)
  3. 结合(合并)
  4. 终结(最终)

这就是正式术语在国家首都,并且它是中等直观。想想一个计算平均水平。

  1. 初始化程序:设置和=0;N=0
  2. 迭代:设置总+=x;N++
  3. 合并器:设置和=sum1+sum2;设置N=N1+N2
  4. 终结:结果=sum/N-N=0(zero-鸿沟)检查

合并器是用于结合起来的中间结果从平行执行;每个并行开始执行的迭代和产生的中间结果。在并行执行完成,该单独设置的价值观是联合与合并。

你可以写类似的码在ID-使用存储程序或C或Java UDRs.

看到这样的问题 显示一个多关系,作为2列—1的唯一行(ID&逗号分开列) 对于一个基于字符串GROUP_CONCAT()实现的功能在Informix。

其他提示

有肯定是Informix的没有内置功能来做到这一点。是否有任何其他主流RDBMS有这样一个奇怪的聚集功能?排序方式列在查询未选择有点半信半疑,但分组?这是对我一个新的。

您必须编写一个存储过程或UDR产生这样的数据集。说实话,我也不会在数据库中尝试此。它看起来像最适合这个输出的消费者(即应用程序/ Web应用程序/报告,作家等)的任务。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top