物料清单BOM展开
wils
创作者俱乐部成员
这是个常见的问题:下面这个表里,每一行代表生产工件所需子件的数量,要展开这个表,列出生产工件A,所需的最末级子件及数量。
工件 | 子件 | 数量 |
A | B | 1 |
A | C | 2 |
B | C | 3 |
B | D | 4 |
D | C | 5 |
D | E | 6 |
如果安装了xloil,则可以在wps里写sql,而sql里的递归写法似乎非常适合解决这种问题
👋 | =xloSql("with recursive r as ( select * from Table1 union all select r.工件, Table1.子件, r.数量*Table1.数量 from r join Table1 on r.子件 = Table1.工件 ) select 工件, 子件, sum(数量) from r where 工件 = 'A' and 子件 not in (select 工件 from Table1) group by 工件, 子件",,A1:C7) |
其中Table1是指数据源表
在递归表r里,先加入Table1里的所有行
然后从r里每次取出一行,与Table1连接,结果再插入递归表r
直到r里的所有行都取出,且无法再连接Table1
最后从r里找出所有工件A,最末级子件,再把数量求和
这个思路十分清晰
而在写出sql以后,再写js宏,思路就比较顺了,但还是比sql复杂难懂一点。。。
而且,如果数据源表是csv,Shell里可以几乎不修改执行sql查询csv文件
所以,既然WPS都有新的正则公式了,且kingsoft文件夹里也有sqlite3.dll,不如加上SQL查询公式,可以极大的扩展表的连接等查询操作,非常方便
期待官方提供SQL公式😁