3.7 序列中所有集合成员的合集

 

在序列的聚合运算中,计算和列。
订单表和订单明细表是主子表关系,每个订单有多条明细数据。如下图:

Order
ID*
Customer
Date
OrderDetail
OrderID*
Number*
Product
Amount

订单明细表中每个订单的明细数据是不定长的。想要查询出如下表格:

ID Customer Date Product1 Amount1 Product2 Amount2 Product3 Amount3
1 3 20190101 Apple 5 Milk 3 Salt 1
2 5 20190102 Beef 2 Pork 4
3 2 20190102 Pizza 3

脚本:

A
1 =connect(“db”)
2 =A1.query@x(“select * from OrderDetail left join Order on Order.ID=OrderDetail.OrderID”)
3 =A2.group(ID)
4 =A3.max(~.count()).(“Product”+string(~)+“,”+“Amount”+string(~)).concat@c()
5 =create(ID,Customer,Date,${A4})
6 >A3.run(A5.record([ID,Customer,Date]|~.([Product,Amount]).conj()))

A1 连接数据库
A2 查询订单明细表和订单表,两表按订单 ID 连接
A3 将取出的数据按订单 ID 分组
A4 计算成员数最大值,然后生成数据结构串
A5 根据 A4 确定的数据结构创建序表
A6 循环每组数据,其中使用了 conj 函数计算本组各个产品和数量的和列,最后把生成的数据追加到 A5 创建的序表中。