首页 文章

CTC在kdb递归查询中

提问于
浏览
1

以下是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 回答

  • 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对凡人的q的例子 . 更多这里:http://code.kx.com/q/ref/control/#over

相关问题