问题标签 [common-table-expression]

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 投票
5 回答
30481 浏览

sql-server - 如何引用一个 CTE 两次?

我有一个非常胖的公用表表达式,其中包括行号,以便我可以返回分页结果集。我还想在分页结果集之前返回与查询匹配的记录总数。

显然我上面的查询是不完整的,但这只是为了说明我的观点。我想要一页结果和匹配的总数。我如何做到这一点,而不必从字面上复制和粘贴整个 20+ 行 CTE?

0 投票
2 回答
311081 浏览

sql-server - 保持简单以及如何在查询中执行多个 CTE

我有这个简单的 T-SQL 查询,它从一个表中发出一堆列,并连接来自其他相关表的信息。

我的数据模型很简单。我有一个预定的活动,有参与者。我需要知道有多少参与者参加了每个活动。

我对此的解决方案是添加一个 CTE,它将预定的事件分组并计算参与者的数量。

这将允许我在每个预定事件中加入该信息。保持查询简单。

我喜欢让我的查询保持简单,但是,如果我将来需要在我的简单查询期间访问其他临时结果,我该怎么办?

我真的很喜欢,如果我可以有多个 CTE 但我不能,对吧?我在这里有什么选择?

我已经排除了应用程序数据层的视图和处事。我更喜欢隔离我的 SQL 查询。

0 投票
1 回答
3290 浏览

sql - SQL CTE 计算子递归

我想(使用 cte)以这种方式计算表中的孩子,以便在父母级别拥有所有孩子的数量,包括他们的孩子。有样品吗?

0 投票
2 回答
3048 浏览

vba - 为什么我不能对 ADODB 和 Oracle 执行“with x as (...)”?

我无法通过 ADODB 和 Oracle执行带有with 子句的 SQL 查询。

也就是说,以下代码段有效:

但是,以下操作不起作用 - 它会生成运行时错误 3704:关闭对象时不允许操作。

显然,这是对实际问题的精简演示,其中包含更复杂的查询。

在我看来,ADODB 在将查询传递给 Oracle 实例之前对其进行了解析,并且不理解with 子句。无论如何,对此的任何帮助都将受到高度赞赏。

0 投票
2 回答
406 浏览

sql - VBA 中的 SQL 错误

我在 SQL (2005) 中有以下代码,它计算系统上的平均用户登录次数:

现在的问题是,当我将它放在 excel 中的 VBA 宏中以在 strSQL =“QUERY SHOWN ABOVE HERE”参数中的特定单元格中得到结果时,我在 excel 中得到错误

关键字附近的语法不正确 with

值得一提的是,我不会在多行中破坏 VBA 中的代码..我将它们全部放在一行中。

0 投票
2 回答
2741 浏览

performance - 如何在子查询分解的临时表上创建索引?

我有一个查询,它在顶部有一个子查询的 WITH 语句,然后我在子查询上运行了几个 CONNECT BY。子查询可以包含数万行,并且 CONNECT BY 层次结构的深度没有限制。目前,此查询需要 30 秒以上;是否可以在为分解子查询创建的临时表上指定索引以加快 CONNECT BY 速度,或者以其他方式加快速度?

0 投票
1 回答
239 浏览

sql - 常用表表达式,遍历图时如何避免无限递归?

我有一个简单的加权图

假设这描述了一个家庭,A 是父亲,B 是儿子,C 是母亲。假设 B 在大学读书,A 为他买了一套公寓。A和C住在共同拥有的房子里,50-50。

我想将图形转换为一棵树,从 A: 即开始。

  • A拥有C居住地50%的股份
  • A 拥有 B 居住地的 100%
  • C拥有A居住地50%的股份

图表和生成的树可能更精细,但我希望你能得到更一般的画面。

在 SQL Server 2005 上,我有

我正在使用以下公用表表达式来遍历图形,从“A”开始:

这引起

通过取消注释来限制递归级别会And b.Level<=1给出预期的结果,但这显然对任何实际用途都不是很有用。

有没有办法引用以前的迭代,以便在上面的示例边缘(即 FirstVertex、SecondVertex 对)中不会重复?

0 投票
1 回答
223 浏览

sql - SQL Server 2005 中的 CTE 评估

我有一个关于 MS SQL 如何评估 CTE 中的函数的问题。几次搜索都没有找到与此问题相关的任何结果,但如果这是常识并且我只是落后于曲线,我深表歉意。这不会是第一次:-)

这个查询是我实际正在做的事情的简化(并且显然不太动态)版本,但它确实表现出我遇到的问题。它看起来像这样:

关于上述的所有执行,可以假设以下内容:

  • 的结果dbo.fnUtil_Random()始终是大于零且小于或等于传入参数的 int 值。由于在上面调用它时@NumEmployees其值为 2,因此此函数的计算结果始终为 1 或 2。

  • 的结果dbo.fnUtil_ParseCriteria(@CustomerIDs, 'int')生成一个单列单行表,其中包含一个 sql_variant,其基类型为“int”,值为 219935。

鉴于上述假设,(无论如何对我而言)上述表达式的结果应该始终生成一个包含一条记录的两列表 - CustomerID 和 EmployeeID。CustomerID 应始终为 int 值 219935,而 EmployeeID 应为 42 或 43。

然而,这并非总是如此。有时我会得到预期的单曲记录。其他时候我得到两条记录(每个 EmployeeID 一条),还有一些我没有得到任何记录。但是,如果我用真正的临时表替换 RandomizedCustomers CTE,问题就完全消失了。

每次我认为我对这种行为有一个解释时,事实证明它没有意义或不可能,所以我真的无法解释为什么会发生这种情况。由于当我用临时表替换 CTE 时问题不会发生,我只能假设它与 CTE 内的函数有关,在连接到该 CTE 期间评估。你们有任何理论吗?

0 投票
2 回答
714 浏览

tsql - T-sql 常用表达式查询作为子查询

我有以下查询:

它连接按 id 分组的不同行的 varchar 值。但现在我想将它作为子查询包含在内,它给出了一些我无法解决的错误。使用简化示例:

错误(西班牙语的近似翻译):

我做错了什么?

0 投票
5 回答
8169 浏览

sql - SQL:使用公用表表达式递归获取父记录

假设您必须遵循以下表格,其中销售由产品组成,并且产品可以放置在多个类别中。其中类别具有如下层次结构:

表:

问题:

现在在我的网站上,我想创建一个控件,其中仅显示特定销售的类别,并且类别填充有销售的产品。我还想包括类别的层次结构。因此,如果我们有一个叶节点,则递归地向上到顶部节点。

所以对于 sale1 我应该有一个带有以下结果的查询: