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

sql - MS SQL 服务器和树

我正在寻找某种从如下定义的树表中提取数据的方法。

表树定义为:-
TreeID uniqueidentifier
TreeParent uniqueidentifier
TreeCode varchar(50)
TreeDesc varchar(100)

一些数据(23k 行),Parent Refs 回到表中的 ID

以下 SQL 呈现整个树(大约需要 2 分钟 30 分钟)

我需要执行以下操作。

1) 使用其 LVL 1 父级渲染每个树节点
2) 渲染所有具有与 TreeDesc 匹配的描述的节点,例如“SomeText%”
3) 渲染所有用于单个树 id 的父节点。

第 2 项和第 3 项需要 2 分钟 30 分钟,所以这需要更快!
第 1 项,只是不知道如何在不杀死 SQL 或永远占用的情况下做到这一点

任何建议都会有所帮助

谢谢

朱利安

0 投票
2 回答
290 浏览

sql-server - 使用 CTE 在联结表中合并值并删除重复项

我有以下架构:

数据的用户想要合并 Segments.Names,并给了我一个映射到新 Segment.Names 的当前 Segment.Names 列表(所有这些当前都存在)。

所以现在我在一个临时表中有这个列表,其中包含要映射到的 currentID 和 newID。

我想做的是根据这张地图更新 SegmentsParcels 中的 SegmentID。我可以使用以下语句:

但这会创建一些重复我对 SegmentParcels 中的 ParcelID 和 SegmentID 有唯一约束。

解决此问题的最佳方法是什么?我考虑删除约束,然后处理删除重复项(我曾经做过一次并且可能会再次这样做),但我希望有一种更简单的方法。

0 投票
1 回答
223 浏览

sql-server - 如何在 SQL Server 中使用公用表表达式并检查无重复

我有一个表引用自己。

用户表:id, username, manageridmanagerid链接回id

现在,我想得到所有的经理,包括直接经理,直接经理的经理等等......问题是我不想有一个不间断的递归sql。

所以,我想检查一个 id 是否已经在列表中,我将不再包含它。

这是我的sql:

问题是在这一行:

SQL Server 向我抱怨我不能将 ' ' 作为 idlist 的初始化值。nvarchar(40) 也不能正常工作。我不知道如何在像这样的公用表表达式中声明它。通常,在 db2 中,我可以只放 varchar(40)

我的样本数据:

我想做的是找到c guy的所有经理。结果应该是:admin,a,b。

一些用户可以是他的经理(如管理员),因为 ManagerID 不允许为 NULL,而一些用户没有直接经理。

使用公共表表达式,它可以导致无限递归。所以,我也试图通过不包含两次 id 来避免这种情况。例如,在第 1 次迭代中,我们已经有了 id : 1,因此,在第 2 次及以后的迭代中,永远不允许使用 1。

我还想问一下我目前的方法是否好,还有其他解决方案吗?因为如果我有一个层次结构很深的大数据库,我将不得不初始化一个大的 varchar 来保存它,它会消耗内存,对吧?

0 投票
1 回答
318 浏览

sql - 具有 2 个并集的公用表表达式计数器

如果我有一个有母亲和父亲的家庭的公用表表达式,我该如何增加“世代”计数器?一个家庭应该将孩子作为第 0 代,将父母作为第 1 代,将四个祖父母作为第 2 代。但是循环执行两次,每组祖父母一次。

0 投票
6 回答
11087 浏览

sql - 在 SQL Server 中对递归结果集进行排序

我在构建返回 XML 样式层次结构的查询时遇到了极大的困难。

我们有一个数据库表,其中包含我们网站的 URL 层次结构。该表包含以下列:ID、URL、DisplayName、ParentID、ItemOrder

父 ID 在当前项与其父项之间形成递归关系。该项目应位于其在层次结构中的父级之下,并且还应使用项目顺序针对层次结构中同一级别的项目进行排序。

我设法使递归查询正常工作,因此它按顺序向下钻取层次结构,但我也无法按项目顺序对其进行排序。

我当前的查询如下:

0 投票
3 回答
21990 浏览

sql-server - SQL Server 中 With 子句的使用

with子句在 SQL Server 中如何工作?它真的给了我一些性能提升还是只是有助于制作更具可读性的脚本?

什么时候使用合适?with在开始使用从句之前,您应该了解什么?

这是我正在谈论的一个例子:

http://www.dotnetspider.com/resources/33984-Use-With-Clause-Sql-Server.aspx

0 投票
1 回答
1039 浏览

sql - CTE 建立部门和经理列表(分层)

我需要为公司部门生成一个用户列表,这些用户是经理或经理的经理。

我有两张桌子;一份详细说明部门,一份包含经理层级(简化):

基本上,我正在尝试构建一个 CTE,它会给我一个 DepartmentId 列表,以及该部门经理层次结构中的所有 ManagerId。

所以...假设经理 1 是部门 1 的经理,经理 2 是经理 1 的经理,经理 3 是经理 2 的经理,我想看看:

基本上,经理们能够与他们所有的副经理的部门打交道。

构建 CTE 以返回 Manager 层次结构相当简单,但我正在努力将 Departments 注入其中:

我需要所有部门以及所有相关经理的列表。

任何人都可以帮忙吗?

0 投票
1 回答
230 浏览

sql-server - 如何为这个简单的案例创建一个 Pivot 查询?

我有一个非常简单的查询,我需要对其进行透视,但我不知道如何根据我在文献中阅读的内容将其转换为透视表。我读过的所有内容都涉及硬编码的列或过于复杂。它必须更简单,否则我无法掌握 CTE。

查询是他们有权访问的用户名和客户端的列表。所以我有类似的东西:

客户总数可能在 20 左右。一些用户可以访问所有客户端,而其他用户只能访问一两个。我想看到的是:

这涉及三个表:一个用户表、一个客户表和一个将用户与其客户联合起来的交叉引用表(权限)。

我已经尝试过类似以下的方法,但它显然不起作用(甚至无法编译)。

任何线索最感激!

0 投票
3 回答
2592 浏览

sql - 通过 CTE 或子查询与下属更新记录

假设我有一个包含以下列的表格:

员工

managerID 是对employeeID 的引用。对于所有记录,totalOrganization 当前为 0。

我想将每一行的 totalOrganization 更新为他们下的员工总数。

所以有以下记录:

查询应将 totalOrganizations 更新为:

我知道我可以得到一些组织。使用以下 CTE 的图表:

有没有办法使用存储过程更新雇员表,而不是在 SQL 之外构建一些例程来解析数据?

0 投票
2 回答
167 浏览

sql - Sql 2005 CTE 可以做到这一点吗?

我一直在处理一个查询,该查询将根据截止日期和完成任务所需的分钟数返回生产线的建议开始日期。

有一个日历表(LINE_ID、CALENDAR_DATE、SCHEDULED_MINUTES)显示每条生产线,即当天计划的分钟数。

示例:(通常每天安排 3 个轮班时间,没有周末,但可能会有所不同)

为了获得建议的开始日期,我需要从截止日期开始并向下迭代,直到我积累了足够的时间来完成任务。

我的问题可以用 CTE 完成,还是应该由游标处理。或者......我只是完全错误的方式吗?