CTC在kdb递归查询中

时间:2014-02-26 14:19:41

标签: 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
    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

1 个答案:

答案 0 :(得分:2)

我不是100%确定你要做什么,但kdb中有两个有用的递归关键字

over

scan

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

离。

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

但如果您想要每个步骤的输出,请使用scan:

离。

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

这些都是Jeff Borror的凡人的例子。更多信息:http://code.kx.com/q/ref/control/#over