问题标签 [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 投票
1 回答
379 浏览

sql-server-2005 - 你如何获得许多顶级根?

我有一个父/子关系表,多对多

假设我有公司 a、b、c、d、e

我收到此查询以返回一位顶级父母

如果我通过 b,我只会得到

因为我写的查询只能管理一个顶级父母。您将如何修复它以获取整棵树,就像第一棵树一样?

这是我的 CTE

最后,按照上面的逻辑,我得到了a,如何得到a,d?

0 投票
4 回答
15542 浏览

sql - SQL 2005 CTE 与 TEMP 表 用于连接其他表时的性能

我有一个复杂的查询,需要在后续查询(实际上是更新语句)中使用。我已经尝试过使用 CTE 和临时表。与临时表方法相比,使用 CTE 的性能很糟糕。它类似于 15 秒与毫秒。为了简化测试而不是在后续查询中加入 CTE/Temp 表,我只是从中选择了 *。在这种情况下,它们的表现相同。

我已经在后续查询中查看了这两种方法的执行计划,然后只需选择 *. 使用简单选择,查询计划大致相同,但使用后续选择中的连接,查询计划则不同。具体来说,用于创建和填充临时表的查询计划部分保持不变,而用于创建和填充 CTE 的查询计划部分在随后用于带有连接的查询时会发生巨大变化。

我的问题是,为什么 CTE 的创建和填充的查询计划会随着它随后的使用方式而改变,而临时表却没有。同样在什么情况下,CTE 会比临时表产生更好的性能?

*注意我也使用了一个表变量,它与临时表方法相当。

谢谢

0 投票
4 回答
51659 浏览

sql - 如何在 CTE (SQL Server 2005) 之后使用 if 语句

昨晚我在写一个像这样的简单的T-SQL程序

我在编译后发现它会抛出类似“if 附近语句不正确”之类的错误

怎么了?

但是,我通过使用其他方式做到了这一点。但我想知道为什么它不起作用!

0 投票
4 回答
1786 浏览

sql - 在 SQL Server 中重新排序一组数据

我有一个这样的值表:

在这张表中,我有这样的行

我想要根据 Name2 列的顺序更新(UPDATE SET)序列的最佳方法,所以重新排序时的值是:

我很确定这可以通过 CTE 的 ROW_NUMBER OVER() 样式完成,但不确定确切的语法。

0 投票
4 回答
15589 浏览

sql - 为什么我使用过一次后无法访问我的 CTE?

我的存储过程如下所示:

我只能使用一次吗?

0 投票
1 回答
2504 浏览

sql-server - SQL Azure 和对 CTE 语法的支持?

有谁知道 SQL Azure 是否支持 CTE 语法?具体来说;

  • WITH
  • OVER
  • ROW_NUMBER()
  • PARTITION BY
0 投票
1 回答
4122 浏览

sql - 单个选择语句中的多个 cte,其中 ctes 可以相互引用

扩展以下问题(多选语句)我想知道我是否可以执行以下操作:

所以这里的重音在下面一行:

我在 cte2 中的哪个位置引用 cte1 ?

0 投票
4 回答
701 浏览

sql-server - TSQL CTE 和排序图

具有以下结构和示例数据的表:

是否可以编写一个 CTE 查询来完成以下任务:

我很难编写一个停止在递归语句中返回行的语句。

有任何想法吗?

编辑

澄清 GetActivities('a')。此函数应找到“a”的“开始”活动并继续查找“a”上的任何“转移”活动。此时,该函数可以使用“b”递归,从而使用样本数据递归“c”。查询应通过“Transfers”返回与“a”相关的所有活动。这种活动嵌套可以根据需要深入并且是未知的(因此没有联合)。我遇到的困难是还有另一个“转移”,例如“b”->“a”。您可以看到这将如何在递归查询中创建一个循环。

再澄清一点:活动表中的传输表现为堆栈。以下是数据在表中的填充方式(在 C# 中):

0 投票
1 回答
3967 浏览

sql - 公用表表达式给出错误

0 投票
3 回答
19296 浏览

sql - 如何重用公用表表达式

我正在使用公用表表达式进行分页:

进行此查询后,我立即进行了几乎相同的查询以检索项目总数:

我尝试将这些组合在一起(即:定义 CTE,查询数据,然后查询 Count,但是当我这样做时,我收到一条错误消息“Invalid object name 'query'”以响应第二个查询(Count )。

有没有办法将这两个查询合并为一个,以节省到数据库的往返行程?