sql – Informix中的group_concat

前端之家收集整理的这篇文章主要介绍了sql – Informix中的group_concat前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在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中实现这一目标的最有效方法是什么?我们肯定要使用存储过程吗?

解决方法

您必须定义用户定义的聚合才能执行此操作.这有四个部分 – 四个功能(在 IDS 12.10 Info Centre搜索 CREATE AGGREGATE):

>初始化程序(INIT)
>迭代器(ITER)
>组合(COMBINE)
>终结者(最终)

这是首都的官方术语,它具有中等直观性.考虑计算平均值.

>初始化程序:设置sum = 0; N = 0
>迭代器:设置sum = x; ñ
>组合器:设置sum = sum1 sum2;设置N = N1 N2
>终结器:结果= sum / N – N = 0(零除)检查

组合器用于组合并行执行的中间结果;每个并行执行都从迭代器开始,并生成中间结果.当并行执行完成时,单独的值集合与组合器组合.

您可以在IDS中编写类似的代码 – 使用存储过程或C或Java UDR.

有关在Informix中实现的基于字符串的GROUP_CONCAT()函数,请参阅SO问题Show a one to many relationship as 2 columns — 1 unique row (ID & comma separated list).

猜你在找的MsSQL相关文章