问题标签 [recursive-cte]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
131 浏览

sqlite - 普通 CTE 的递归 CTE

我有一个 with 子句,它按时间间隔和天气描述对一些天气数据进行分组:

结果 {counter, hour, current_weather_description}:

现在我想编写一个递归查询,逐小时选择第一行。顶行将始终包含该时间间隔内出现次数(计数)最高的描述,或者在平局的情况下,它仍将选择顶行。这是我的第一次尝试:

从玩弄查询看来,它似乎希望我的递归成员“来自”来自“段”而不是我的 temp_table。我不明白它为什么要我这样做。我正在尝试做与此示例类似的事情,但我希望每个递归查询中只有 1 行。

这是我想要的结果 {count, hour, description}:

0 投票
1 回答
384 浏览

reporting-services - 报告生成器在递归 CTE 中因类型不匹配而引发错误

我正在使用在这里找到的递归 CTE 来获取某个范围内的日期:

此 CTE 在我的 SQL Server 上运行良好,但是当尝试在 Report Builder 3.0 中使用此查询创建数据集时,我得到了“定义查询参数”对话框(我通常不会得到),单击“确定”后出现错误:Types don't match between the anchor and the recursive part in column "d" of recursive query "T".

我知道return ,我虽然 Report Builder 传递了进去 ,所以我认为将返回值转换DATEADD为a会解决它,但它没有。SMALLDATETIMEDATETIME@DateFromDATEADDDATETIME

我在这里想念什么?

0 投票
4 回答
72031 浏览

sql - 单个查询中的多个 CTE

是否可以在单个查询中将多个 CTE 与arel?我正在寻找获得这样结果的方法:

如您所见,我有一个递归 CTE 和两个非递归 CTE。

0 投票
1 回答
77 浏览

sql-server - 这是否需要递归 CTE、创意窗口函数、循环?

我一生都无法弄清楚如何获得 X 类别分数的加权排名。例如,学生需要回答 3 个类别的 10 个问题(问题的数量和类别的数量最终都会变化)。要获得总分,每个 X (3) 个类别中的前 1 分将被添加到剩下的任何内容中,从而总计 10 个问题总分。

这是数据。我使用 CASE WHEN Row_Number() 来获取 TopInCat

http://sqlfiddle.com/#!6/e6e9f/1

小提琴有更多的学生。

这就是我设想它需要的样子,但不一定是这样。我只需要按 3 个类别详细数据列出 10 个问题,这样我就可以对下面的 Sort 1-10 列进行求和和平均。999 可以是 null 或其他任何值,只要我能总结出重要的内容并提供详细信息即可。

最后一件事,一旦满足 X (3) 阈值,类别就不再重要。因此,第 4 类将正常排序。

我真的很感激任何帮助。这几天一直在敲我的头。

0 投票
1 回答
1394 浏览

sql - 递归 CTE 的 SQL 替换

我有一个表测试,其中包含

我想与其他列一起生成路径,如下所示

根据这个问题,我可以使用递归 CTE 来实现这一点

但我正在使用目前缺少此选项的 WX2 数据库。有没有一个 SQL 替代方案?

0 投票
1 回答
66 浏览

sql - 在文件系统中查找文件的完整路径

我有一个这样的文件系统:

每个文件或目录都有一个 ID,以及它的父 ID。现在给定一个文件名或目录名,如何找到它的完整路径?

我的算法是:

0 投票
1 回答
888 浏览

postgresql - 在 PostgreSQL 中合并重叠的时间范围

我有一个包含时间戳范围和用户 ID 的 PostgreSQL (9.4) 表,我需要将任何重叠范围(具有相同的用户 ID)折叠成一条记录。

我已经尝试了一组复杂的 CTE 来实现这一点,但是在我们的(40,000 多行)真实表中存在一些使事情复杂化的边缘情况。我得出的结论是,我可能需要一个递归 CTE,但我没有任何运气来编写它。

这是一些用于创建测试表并用数据填充它的代码。这不是我们表格的确切布局,但对于示例来说已经足够接近了。

我发现我可以这样做以按开始时间对会话进行排序:

我可以使用它来确定单个记录是否与以前的记录重叠,使用窗口函数:

但这仅检测单个先前记录是否与当前记录重叠(请参阅记录 where id = 6)。我需要一直检测到分区的开头。

之后,我需要将所有重叠的记录组合在一起,以找到最早会话的开始和最后一个会话的结束以终止。

我确信有一种方法可以做到这一点,但我忽略了这一点。如何折叠这些重叠的记录?

0 投票
2 回答
128 浏览

sql-server - SQL Server:如何从具有开始和结束时间的表中构建日期范围

我有一个包含 24 个条目的临时表,每个条目对应一个由 DayID 注释的特定日期的每个小时。该表包含在该特定时间范围内应用程序是打开还是关闭的指示。

我想减少表中的条目数,只显示应用程序应该打开的时间。

部分样本数据如下:

所需的输出应该是

#OnOff 表将始终包含一天中每个小时的值(即结束时间和开始时间总是连续的,除了最后一小时)。显然可以使用游标来实现这一点,但这似乎效率很低。有没有更好的方法来达到这个结果。

0 投票
1 回答
2304 浏览

postgresql - 将递归 CTE 与 Ecto 一起使用

我将如何在计划使用 Ecto 运行的查询中使用递归 CTE 的结果?例如,假设我有一个表,节点,结构如下:

而且我还有另一个表 nodes_users 结构如下:

现在,我想获取一个节点位于或高于特定节点的所有用户,举个例子,让我们选择 id 为 8 的节点。

我可以使用以下递归查询来执行此操作:

这应该返回 users.* 用于 id 为 1、2 和 4 的用户。

我不确定如何使用 ecto 运行相同的查询,理想情况下以返回可链接输出的方式。我知道我可以使用片段宏将原始 SQL 插入到我的查询中,但我不确定这将用于此用途,或者这是否是最合适的途径。

帮助和/或建议将不胜感激!

0 投票
1 回答
425 浏览

sql-server - CTE 创建产品层次结构树

我有以下三个代表产品数据的表格。简而言之,产品“A”和“B”是最终产品。为了找出构成产品“A”的部件,我们查看“ProductComponents”表,该表给出了 ComponentListId = 1。

根据“PartsSubcomponents”表查询这个 ComponentListId 告诉我们它有两个子组件,即 A11 和 A12。

A11 很小,没有其他子组件。但是,A12 存在于“ProductComponents”表中,告诉我们它是由 X1 和 X2 制成的。

最终产品

产品组件

零件子组件

我需要使用 CTE 来查找产品及其部件之间的层次结构级别。在这种情况下,结果应该是这样的: