【问题标题】:CTE in kdb recursive querykdb递归查询中的CTE
【发布时间】:2014-03-29 10:40:49
【问题描述】:

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

使用 AdventureWorks2012; 走 WITH DirectReports(ManagerID, EmployeeID, Title, EmployeeLevel) AS ( SELECT ManagerID, EmployeeID, Title, 0 AS EmployeeLevel FROM dbo.MyEmployees ManagerID 为空的地方 联合所有 选择 e.ManagerID、e.EmployeeID、e.Title、EmployeeLevel + 1 FROM dbo.MyEmployees 作为 e INNER JOIN DirectReports AS d ON e.ManagerID = d.EmployeeID ) 选择 ManagerID、EmployeeID、Title、EmployeeLevel 来自 DirectReports 按 ManagerID 订购; 走

【问题讨论】:

    标签: recursion common-table-expression kdb


    【解决方案1】:

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

    over
    

    scan
    

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

    例如

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

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

    例如

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

    这两个例子都来自 Jeff Borror 的 q for mortals。更多内容:http://code.kx.com/q/ref/control/#over

    【讨论】:

      最近更新 更多