加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

sql – Informix中的group_concat

发布时间:2020-12-12 16:22:50 所属栏目:MsSql教程 来源:网络整理
导读:在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)f
在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).

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读