来自Azure SQL数据库上的递归
介绍
递归CTE是一种反复引用查询的方法,直到被认为是端点或终止检查(如所称)。值得注意的是,本文演示的示例将在Azure SQL数据库上完成。
使用递归CTE有一定的结构,如下所示:
图1:递归CTE结构
有一个初始查询被称为“锚点查询”,在上图中,该查询选择数字“1”作为“n”。有一个使用“UNION ALL”连接在一起的辅助查询。辅助查询,也称为“递归成员”(如上图所示)是连续运行的查询,直到递归成员到达终止点为止(也显示在上面的图像上)。
场景
例如:某公司总部人力资源部员工,需要向分公司经理询问员工的进展情况,以便了解现有员工的能力,能否胜任自己的岗位,从而了解该公司是否需要招收更多的员工,所以想要找出谁在管理员工。
解决方案
如上所述,示例是在Azure SQL数据库上完成的。所以,让我们来解决这个问题。这个演示被广泛用于展示递归CTE的用例。
图 2:数据集
以上是我们将要使用的数据集,以及我们将用于构建递归 CTE 的数据集。因此,在此示例中,我们可以看到有 2 条记录没有为"ReportsTo"列填充值,我们将假定它们是经理。
为了构建递归 CTE,我们将首先选择"ReportsTo"等于 NULL 的记录。
上图显示的将是递归CTE的锚定成员,如图1所示。这将是为递归成员设置基础的初始查询。在定位查询和递归之间,使用了“UNION ALL”联接,如下所示:
接下来是递归成员,它将连续运行,直到达到终止检查为止。现在让我们创建接下来的2个步骤,其中包括递归成员和终止检查(可以在查询的内部联接中看到)。
如您所见,上述代码已包装在" WITH StaffHierarchy AS"中,该代码调用递归 CTE,或者为此调用CTE。
最后,通过从CTE本身选择来完成代码,以展示递归CTE的结果。
推荐阅读
5. 不再裂开 | 一组你们心心念念的 Power BI 报告集锦,请签收!
技术交流
1.Power BI免费下载:http://www.yeacer.com/
Microsoft Power BI Desktop中文最新版:下载地址
2.欢迎加入的Power BI技术群,目前正在学习阶段,有兴趣的朋友可以一起学习讨论。
Power Data技术交流群:702966126 (验证注明:博客园Power BI)
更多精彩内容请关注微信公众号:悦策PowerBI
如果您觉得阅读本文对您有帮助,请点一下“推荐”按钮,您的“推荐”将是我最大的写作动力!欢迎各位转载。