问题标签 [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 回答
490 浏览

sql - PostgreSQL 中的递归 CTE 问题

此查询生成从 1 到 4 的数字。

但是,如果我将其修改为此,

它给

错误:“z”处或附近的语法错误

我在这里做错了什么?

0 投票
1 回答
133 浏览

sql - Recursive chain with JOIN element?

I recently asked for a recursive query in postgreSQL. The answer fit well, but as soon as I add a JOIN element, it gives me the following error:

ERROR: missing FROM-clause entry for table "n": WITH RECURSIVE chain AS ( SELECT n.pordnr, pz.pordnrzu, n.abschl, n.stg, n.kzfa, n.pversion FROM pord n LEFT JOIN pordnrzu pz ON pz.pordnr = n.pordnr WHERE n.pordnr = 112 UNION ALL SELECT n.pordnr, pz2.pordnrzu, n.abschl, n.stg, n.kzfa, n.pversion FROM chain c LEFT JOIN pordnrzu pz2 ON pz2.pordnr = n.pordnr INNER JOIN pord n ON (c.pordnrzu = n.pordnr) WHERE c.abschl IS NULL ) SELECT * FROM chain c WHERE c.abschl IS NOT NULL

I tried several modifications but I can't get it to work. All I want is, that pordnrzu is being implemented to look for another pordnr.

So: pordnr -> pordnrzu -> pordnr

Is there anything I just missed?

This is the sample table:

And this my query by now:

My aim is that I start with pordnr=112, which then leads per pordnrzu to other pordnr until it finds the first entry with abschl NOT NULL

In this example, the solution would be this row:


PostgreSQL 9.2.6 on x86_64-unknown-linux-gnu, compiled by gcc (SUSE Linux) 4.3.4 [gcc-4_3-branch revision 152973], 64-bit

0 投票
3 回答
12480 浏览

oracle - PostgreSQL 在 Oracle 中是否有类似“LEVEL”的伪列?

PostgreSQL 在 Oracle 中是否有类似“LEVEL”的伪列?
如果没有,那么我们如何创建类似于“LEVEL”的列?

0 投票
2 回答
50 浏览

tsql - 从由日期行组成的表中,如何计算日期在某个日期范围内的行数

我有一张桌子dbo.MyDates

和一张桌子dbo.People

我要做的是检查第 1 -3 行中的每个日期是否在特定日期范围内,然后计算该范围内的日期总数:

这样我就可以totalDaysWithinRange在简单的数学计算中使用。我知道如何使用来自其他语言(如 Java 和 PHP)的 while 循环,但根据我的研究,似乎在 T-SQL 中使用递归 CTE 更好。我过去使用过 CTE,所以我知道它们是如何工作的,但我以前从未使用过递归 CTE。这是我想出的:

我想不通的是如何计算总和,以便我可以在SELECT from cte. 谢谢你的帮助。

0 投票
1 回答
1238 浏览

sql - 调用存储过程到递归cte

我有下表

我使用以下查询为每个 pnlid 获取所有孩子

我使用了一个存储过程 spGetResult,它使用一些约束来更新 Totalisation。

我如何结合spGetResultstarting上面的查询,以便开始从最低的子级递归更新到高级(根)?

0 投票
1 回答
124 浏览

sql-server - 如何将“通过”ORACLE 连接到 SQL Server

在 SQL Server 中使用 RECURSIVE CTE 时,GROUP BY不应使用 等LEFT OUTER JOINORDER BY

如何将此 ORACLE 查询转换为 SQL Server?

我试过了。

但是发生了错误。

递归查询“TEMP_TAB”的“SORT”列中的锚点和递归部分之间的类型不匹配。

另一个问题:如何将connect byORACLE 中的所有数据库系统转换为 ANSI?

不可以吗??

我在下面添加了这个可以在 POSTGRESQL 中使用的查询。

我认为这个查询与 SQL Server RECURSIVE-CTE 查询类似,但在 SQL Server 中,它不起作用。

0 投票
1 回答
35 浏览

sql-server-2012 - 是否有基于集合的解决方案用于在多行上执行 rCTE?

我有一个存储多行的表,每行声明一个点(x,y)。每行引用模式中的下一个点,因此检索整个模式的查询是通过链表结构递归定义的。我开发了一个 rCTE 来检索一个看起来像这样的完整结构......

此外,我还有另一个表,它引用了存储在上述表中的每个模式的起点。

最终目标是开发一个查询,该查询将返回一个二维结果,其中每个模式的所有点都合并到一个逗号分隔的列表中。这个返回值看起来像这样:

(点中的奇数索引是 x,偶数索引是 y。)

现在实现这一点的简单解决方案是循环父表并为每个父表行设置@id并运行 rCTE。那会奏效,我已经有了一个粗略的实现,但我不喜欢这个解决方案。有没有更好、更“SQL”的方式来实现这个目标?

0 投票
1 回答
51 浏览

sql-server - 如何递归计算一个值

我有这张桌子。

我想获取 id 为 3 的捆绑包的总数量,即1 * 4 * 5 = 20items

这可以通过单个查询来完成吗?

0 投票
2 回答
1563 浏览

sql - 选择语句以返回父级和无限子级

给出表结构,如下所示:

我正在为单个 Sql 语句/函数寻找一个优雅(如果可能)的解决方案,当给定一个 Sql 语句/函数时,它将返回表中的所有数据ID = 1

所以我的结果看起来像:

我在 SO 上看到过类似的问题,但在大多数情况下,他们似乎只关注给定数量的级别。

这种结构最终可以是无限的 - 与孩子一起文件夹,与许多其他孩子一起

这可能吗?如果是这样,我将如何实现它?

0 投票
2 回答
98 浏览

sql - 是否在递归 CTE 中优化了外部 WHERE 子句?

使用下表定义:

使用以下查询:

是否在递归 CTE 中优化了外部 WHERE 子句?我考虑使用的替代方法是:

但它的问题是无法从中创建视图。因此,如果两者之间的性能差异很小,我更愿意从递归 CTE 创建一个视图,然后只查询它。