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

sql - SQL 详细连接查询

我正在尝试解决以下问题。

我觉得这是可能的,但我似乎无法得到它。

这是场景:

如果我正在寻找与 Asset-A 具有相同属性的东西,那么它应该识别 Asset-B,因为 Asset-B 具有与 Asset-A 相同的属性(它应该丢弃重,因为 Asset-A 没有指定任何东西不同或相似)。另外,如果我只想要常见的资产 A 和资产 B 的属性,我将如何获得呢?

看起来很简单,但我无法确定它...

我使用的实际表几乎完全是 Table2,只是 AssetId 和 AttributeId 的关联,因此:PK:Id
int:AssetId
int:AttributeId

我只包含资产表的想法以简化问题。

0 投票
10 回答
10433 浏览

sql - 带有数据循环的 SQL Server 2005 递归查询 - 可能吗?

我有一个标准的老板/下属员工表。我需要选择一个老板(由 ID 指定)和他的所有下属(及其下属等)。不幸的是,现实世界的数据中有一些循环(例如,两个公司所有者都将对方设置为他们的老板)。带有 CTE 阻塞的简单递归查询(超过最大递归级别 100)。员工还能选吗?我不在乎它们被选中的顺序,只关心它们中的每一个都被选中一次。


补充:你想要我的查询吗?嗯......好吧......我虽然很明显,但是 - 这里是:


补充2:哦,如果不清楚 - 这是一个生产系统,我必须做一些升级(基本上是添加一种报告)。因此,如果可以避免,我宁愿不修改数据。

0 投票
1 回答
1172 浏览

sql - SQL Server 2005 中的 SQL 查询优化(CTE + 范围函数)

我想知道是否可以优化此类查询。我已经大大简化了它,你看到了它的核心。

它的作用是分层查询下属部门,然后对其进行测距。

我最终制定了一个庞大的执行计划,并想知道是否可以以不同的方式完成。

谢谢你。

0 投票
2 回答
2177 浏览

sql - 重新排序 SQL 层次结构数据类型中的节点

在 SQL 2008 上使用 Hierarchy 数据类型。我的层次结构中的节点如下所示:

我想重新排列节点,以便 /8/3/ 和 /8/1/ 切换位置。关于如何做到这一点的任何想法?

到目前为止,我唯一的想法是我将所有节点加载到 Array 中的一个级别,按照我想要的方式对它们进行排序,从表中删除它们并以排序形式插入。

0 投票
1 回答
1446 浏览

sql - 如何:使用 CTE 从非规范化数据中选择规范化视图?

这是一个非常标准的新手问题,但我正在寻找一种专家聪明的方法来用很少的代码做到这一点。(我知道如何用程序代码和游标来做这个长手,所以我们可以跳过那部分答案。)基本上,我有一个非规范化数据集,我需要在集合处理中提取一个规范化表方式。原始数据来自 Excel,我将其作为表格附加到 MS SQL 中进行查询。单个字段(在 Excel 和 SQL 中)有一个逗号分隔的每个产品参与的部门列表。

我知道我应该对数据进行规范化,但它来自 Excel(用户这样做是不切实际的)。我知道我可以通过一个循环遍历每条记录的过程(如游标或 with 语句)来做到这一点,但对于今天可用的工具来说,这似乎是不必要的。 是否有一条语句可以在其中为这些记录提取带有“参与”字段的主键?

将源想象为:

ProductIDDepartments
 123      1,3,5,15  
 456      2,4,5,16  

我做了正常的 select * from dbo.split(CommaSepField) 但这一次只适用于一条记录(并且您不能使用表值函数提供字段的值。更不用说,您如何合并所有这些单个结果套?

统一所有结果集让我想到了公共表表达式,但我无法完全弄清楚如何(1)使用扩展字段获取主键,以及(2)如何格式化查询以使其工作。

输出当然是:

ProductIDDept
 123      1  
 123      3  
 123      5  
 123      15 
 456      2  
 456      4  
 456      5  
 456      16 

我在 StackOverflow 和 Google 中对此进行了相当多的研究,但并没有真正找到适用的答案。如果我错过了,我深表歉意。请发送链接:D。

0 投票
1 回答
1055 浏览

sql - (SQL Server 2008) - 关于 CTE 和连接的 SQL 问题:-(

如何检索以下结果?

我希望在给定的时间段内每天打印出匹配的登录和注销时间,这是表历史记录。如果同一用户和同一天有多个登录,则 SQL 应选择最小登录日期和最大注销日期。

这是一个用户表:

这是一个历史表:

到目前为止,我可以打印出来,但只有一个用户:

这是一个 SQL(在 SQL Server 2008 上使用 CTE):

我应该以某种方式包括这个,但我被卡住了:-(

以下是历史表中的数据示例:

期望的输出是:

0 投票
7 回答
277529 浏览

mysql - 如何在 MySQL 中使用“WITH”子句?

我正在将我的所有 SQL Server 查询转换为 MySQL,并且我的查询WITH都失败了。这是一个例子:

0 投票
2 回答
2386 浏览

sql-server - SQL Server 递归 CTE 和分页

我有这张桌子

我使用以下查询从中选择数据。选择查询将添加用户为好友的用户和已添加为好友的用户按用户组合

它适用于少量数据,但我希望能够在服务器端进行分页以减少负载。我正在尝试将它与下面的分页 sp

但和往常一样,我遇到了麻烦:)。主要问题是UNION ALL在我的查询中。它阻止我使用ROW_NUMBER() OVER.

有任何想法吗?

0 投票
7 回答
135459 浏览

sql - 您可以为公用表表达式创建嵌套的 WITH 子句吗?

这样的事情有用吗?我早些时候尝试过,但我无法让它工作。

0 投票
4 回答
78072 浏览

sql - 关键字“with”附近的语法不正确...上一条语句必须以分号结束

我正在使用 SQL Server 2005 。我的存储过程中有 2 个 WITH 子句

但是发生错误

关键字“with”附近的语法不正确。如果此语句是公用表表达式或 xmlnamespaces 子句,则前面的语句必须以分号结束。

我有哪些选择?有没有我不知道的分离器?