Recursion kdb递归查询中的CTE

Recursion kdb递归查询中的CTE,recursion,common-table-expression,kdb,Recursion,Common Table Expression,Kdb,下面是sql server中的CTE示例。我必须在KDB中执行类似的递归。KDB是否支持递归查询或类似的查询。目前我可以考虑创建函数,并将每个递归的临时数据保存到某个东西中 USE AdventureWorks2012; GO WITH DirectReports(ManagerID, EmployeeID, Title, EmployeeLevel) AS ( SELECT ManagerID, EmployeeID, Title, 0 AS EmployeeLevel FR

下面是sql server中的CTE示例。我必须在KDB中执行类似的递归。KDB是否支持递归查询或类似的查询。目前我可以考虑创建函数,并将每个递归的临时数据保存到某个东西中

USE AdventureWorks2012; GO WITH DirectReports(ManagerID, EmployeeID, Title, EmployeeLevel) AS ( SELECT ManagerID, EmployeeID, Title, 0 AS EmployeeLevel FROM dbo.MyEmployees WHERE ManagerID IS NULL UNION ALL SELECT e.ManagerID, e.EmployeeID, e.Title, EmployeeLevel + 1 FROM dbo.MyEmployees AS e INNER JOIN DirectReports AS d ON e.ManagerID = d.EmployeeID ) SELECT ManagerID, EmployeeID, Title, EmployeeLevel FROM DirectReports ORDER BY ManagerID; GO
我不是100%确定您想要做什么,但是kdb中有两个有用的递归关键字

over

如果您只对在上面使用的递归的最终结果感兴趣:

但是,如果您需要每个步骤的输出,请使用扫描:

这两个例子都来自杰夫·博罗的《凡人q》。详情如下:

scan
q){x+2*y} over 2 3 5 7
32
q){x+2*y} scan 2 3 5 7
2 8 18 32