来自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的结果。

 

 

推荐阅读

 

1. 2020年度盘点 | Power BI 精汇帖

2. Power BI 架构的数据解决方案

3. Power BI 12月功能更新 —— 视频上线

4. Power BI 12月产品功能更新

5. 不再裂开 | 一组你们心心念念的 Power BI 报告集锦,请签收!

 

技术交流

1.Power BI免费下载:http://www.yeacer.com/

    Microsoft Power BI Desktop中文最新版:下载地址

2.欢迎加入的Power BI技术群,目前正在学习阶段,有兴趣的朋友可以一起学习讨论。 

   Power Data技术交流群:702966126 (验证注明:博客园Power BI) 

   更多精彩内容请关注微信公众号:悦策PowerBI          


如果您觉得阅读本文对您有帮助,请点一下“推荐”按钮,您的“推荐”将是我最大的写作动力!欢迎各位转载。
posted @ 2021-01-13 11:56  PowerBI365  阅读(117)  评论(0编辑  收藏  举报