5.4 用子表过滤主表

SQL

SELECT ProductID,City,sum(Amount) Amount
FROM Customers
INNER JOIN Orders2021 ON Orders2021.CustomerID=Customers.CustomerID
WHERE Orders2021.Quantity>=5
GROUP BY ProductID,City

SPL
当过滤条件在子表上,且子表过滤后订单记录数较少时,可以用子表过滤主表的方式,其原理和主表过滤子表差不多,区别仅在于过滤子表的同时需要按主键聚合。

A
1 =file(“Orders2021_Account.ctx”).open().cursor(CustomerID,ProductID,Amount;Quantity>=5)
2 =file(“Customers.ctx”).open().new(A1,ProductID,City,sum(Amount):Amount)
3 =A2.groups(ProductID,City;sum(Amount):Amount)

A1 读子表文件,产生游标,游标中过滤
A2 读主表文件,用 new 关联子表游标。关联时按子表的主键过滤,引用子表的字段同时汇总,返回游标


SQL

SELECT Region,ProductID,sum(Amount) Amount
FROM Customers
INNER JOIN Orders2021 ON Orders2021.CustomerID=Customers.CustomerID
WHERE Orders2021.Quantity>=5
GROUP BY Region, ProductID

SPL

A
1 =file(“Orders2021_Account.ctx”).open().cursor(CustomerID,ProductID,Amount;Quantity>=5)
2 =file(“Customers.ctx”).open().new@r(A1,Region,ProductID, Amount)
3 =A2.groups(Region, ProductID;sum(Amount):Amount)

A2 由于需要按子表的 ProductID 字段分组汇总,所以和主表关联的时候不能按关联字段聚合,只能关联后再聚合。此时采用 @r 选项

以下是广告时间

对润乾产品感兴趣的小伙伴,一定要知道软件还能这样卖哟性价比还不过瘾? 欢迎加入好多乾计划。
这里可以低价购买软件产品,让已经亲民的价格更加便宜!
这里可以销售产品获取佣金,赚满钱包成为土豪不再是梦!
这里还可以推荐分享抢红包,每次都是好几块钱的巨款哟!
来吧,现在就加入,拿起手机扫码,开始乾包之旅



嗯,还不太了解好多乾?
猛戳这里
玩转好多乾