kdb - KDB/Q:根据列的值添加两个表
问题描述
我有 2 个具有相同列的表。但是,一张表包含 BUY 数据,而另一张表包含 SELL 数据。表的第一列是ID,表的行数可能不一样。如果 ID 的值相同,如何添加 2 个表中的列的值?例如,我想添加 tableA 和 tableB 并且输出是 tableC
tableA tableB
ID Qty ID Qty
ABC 100 ABC 90
XZY 100 TOM 60
TOM 100 ROB 40
AL 100
tableC
ID Qty
ABC 190
XYZ 100
TOM 160
AL 100
ROB 40
解决方案
在这种情况下,您可以使用 pj。要使用 pj,必须对表进行键控才能使连接起作用,并且返回的结果将包括与键控表匹配的行。请参阅帖子底部的链接。
q)tabA:([]ID:`ABC`XYZ`TOM`AL;Qty:100 100 100 100)
q)tabB:([]`ID`ABC`TOM`ROB;Qty:90 60 40 )
q)tabA pj 1!tabB
ID Qty
-------
ABC 190
XYZ 100
TOM 160
AL 100
q)tabB pj 1!tabA
ID Qty
-------
ABC 190
TOM 160
ROB 40
在您的查询中,您需要包含两个表中的所有行,因此您需要创建一个包含所有 ID 的机架并在两个表中应用 pj 以将它们添加在一起。见下文。
(pj/)((select distinct ID from tabA,select distinct from tabB);`ID xkey tabA;`ID xkey tabB)
另一种解决方法是:
q)(pj/)(distinct raze enlist[`ID]#/:(tableA;tableB);1!tableA;1!tableB)
ID Qty
-------
ABC 190
XYZ 100
TOM 160
AL 100
ROB 40
推荐阅读
- subset - 从数据框中删除列等于以下向量之一的行
- python - pip install 不工作,找不到分发
- c# - 无法在 WPF 中的 DevExpress DxTabControl 中获取当前活动/选定的 TabITem
- html - 为什么浮动在 div 中的行为是这样的
- julia - 在 Julia 中创建随机 SIR 模型
- c# - 系统在C#中通过Process模块运行命令时找不到指定的文件
- java - Firebase Cloud Firestore:查询未更新 Android 中的 ArrayList
- reactjs - 如何使用嵌套值监听 formik 字段的变化?
- excel - 通过查找关联行来构建依赖选项列表
- python - Python中magrittr中tidiverse的点占位符功能,特别是Pandas