问题标签 [outer-apply]

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 回答
15 浏览

sql-server-2012 - SQL Server 2012 合并 OUTER APPLY 相关表中的记录

我有一个包含客户详细信息的表“客户”和一个存储每个电话结果的表“呼叫”

当我需要获取必须致电的客户列表时,我会使用此查询

在那里我得到了城市中所有客户的名单以及最后 3 个答案。

但这会为每个客户返回最多 3 条记录,而我只有一条并将 CalledOn 和 Answer 的 3 个值汇总到同一条记录中

更清楚的是:现在:

预期的

目前我正在使用服务器端逻辑来实现这一点,但我确信它可以通过 TSQL 以更简单和更好的方式完成

可以建议方向吗?

谢谢

0 投票
1 回答
441 浏览

sql-server - 交叉应用和外部应用一起使用时违反 PRIMARY KEY 约束

我使用的是 Microsoft SQL Server。我想使用这两个函数来解析进入我的表的数据。所以我同时使用交叉应用和外部应用。

但是当我这样做时,它抱怨以下错误:

违反主键约束“PK_AfterParse_CA_Events”。无法在对象“dbo.AfterParse_CA_Events”中插入重复键。重复键值为 (105818432, 37819929)。该语句已终止。

整个 T-sql 代码如下所示:

您可以看到我需要第二个函数 CA_Parse_CorpActnOptnDtls_fn(ev.MessageID) 因为我想使用我的用户定义函数来编写 LSCI_DateOfRecord 数据。那么当我同时使用这两个功能时,有什么办法可以避免重复?

或者有什么方法可以分别从第二个函数 CA_Parse_CorpActnOptnDtls_fn(ev.MessageID) 为 LSCI_DateOfRecord 和 RoundingDesc 构建临时列表?然后我可以更新表格。

任何帮助是极大的赞赏。

0 投票
0 回答
20 浏览

list - 循环名称列表并从数据框列表中提取数据框

我有一个存储 142 个数据帧的列表我已将它们的名称提取到一个向量中

d.names[1] [1] "ACQ_C.XPT"

我使用了一个函数来创建一个真/假向量,其中包含我希望保留或丢弃的每个数据帧中的变量列表

d1[1] $ACQ_C.XPT SEQN ACD010A ACD010B ACD010C ACQ020 ACQ030 ACD040 ACQ050 ACQ060 ACD070 ACD080 TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE

我希望迭代地查看数据帧列表并创建仅包含向量 d1 中标记为 true 的变量的数据帧

错误:“lapply(seq_along(d.names),function(i,x){as.data.frame(x[,rapply(d1[i], function(x) list(x))])x 中出现意外符号"

0 投票
3 回答
443 浏览

sql-server - 使用带有 OUTER APPLY 的函数时,返回值而不是 NULL

使用内联函数时,我得到了奇怪的结果。这是代码:

在此处输入图像描述

因此,在第一个 SELECT 语句中,我刚刚 OUTER APPLied 函数并返回结果。

在下一个语句中,我从函数中获取代码并将其直接放到 OUTER APPLY 语句中。

最后一条语句只是直接的函数调用。

我不明白为什么第一个查询返回值...

0 投票
1 回答
881 浏览

oracle - 带有 TABLE 构造函数的 Oracle OUTER APPLY 的行为类似于 CROSS APPLY。漏洞?

考虑以下设置:

我的直觉告诉我,以下查询应该产生相同的结果:

但是,它们不会返回相同的结果。#1 的结果似乎是错误的:

结果 1

(表现得像CROSS APPLY,似乎错了)

结果 2、3、4 和 5

使用存储函数的替代方法

为了说明我的困惑,我可以添加一个只返回输入列表的存储函数:

然后在原始查询中使用它:

我现在得到了 4 行的预期结果:

问题

这是 Oracle 12.2.0.1.0 中的错误,还是OUTER APPLY构造TABLE函数应该如何工作?

0 投票
0 回答
36 浏览

sql - 将其转换为一个简单的查询

我想通过使用一个选择语句而不是这些许多子查询并将外部应用转换为左外部连接来将查询优化为一个简单的查询。可能吗?

0 投票
2 回答
1148 浏览

sql-server - 创建笛卡尔积时,CROSS APPLY 和 OUTER APPLY 之间有什么区别吗?

CROSS APPLY在两个表之间创建笛卡尔积时,和之间有什么区别OUTER APPLY吗?

这似乎是一个愚蠢的问题,因为如果表格之间没有表达关系,右手边的表格不能不满足这种关系,但我尊重我不知道的东西。

当我使用简单的测试设置查看执行计划时,它们是相同的[两个索引搜索进入嵌套循环(内部连接)],但简单的测试设置可能具有欺骗性。

这是我的意思的一个例子(SQL Fiddle)。设置:

使用CROSS APPLY

使用OUTER APPLY

...两者都给了我预期的四行。

加上各种变体,其中一个或两个IN子句都不返回匹配项:

...所有这些都给了我预期的零行。

0 投票
0 回答
459 浏览

sql - 当 CROSS APPLY 匹配所有行时,CROSS APPLY 与 OUTER APPLY

例子:

对比

据我了解,这两个脚本将完成相同的事情,因为 MAX() 函数将始终返回结果,即使该结果为 NULL。但是当我将 OUTER APPLY 应用于大型数据集时,它比 CROSS APPLY 慢得多。

我想知道为什么 CROSS APPLY 这么快。它只是使用更有效的算法吗?

0 投票
2 回答
2382 浏览

sql - 使用多个 OUTER APPLY 优化查询

我有多个查询,OUTER APPLY但所有表在连接列上都有主键(所以这里使用聚集索引)所以我不知道如何进一步优化这个查询。此外,这里不可能使用索引视图,因为它们禁止使用ORDER BYand 。TOP

所以我有

  • Fields具有Id主键和大量其他列的表。

  • WeatherHistory具有复杂主键 ( FieldIdand [Date]) 和很多列的表,

  • NdviImageHistory具有FieldId, [Date],[Base64]列(复杂主键FieldId[Date])的表[Base64]存储图像 base64,

  • NaturalColorImageHistory具有FieldId, [Date],[Base64]列(复杂主键FieldId[Date])的表[Base64]存储图像 base64,

  • NdviHistory带有FieldId, [Date],MeanNdvi列的表(复杂的主键FieldId[Date]),

  • FieldSeasonHistory具有Field, StartDate,EndDate列的表(复杂主键FieldId[Date])。

我的查询

我没有创建任何索引,因为我认为自动生成的集群索引(基于主键)应该足够了(但我可能是错的)。此查询执行大约 15 秒,但我想减少查询时间。


编辑:添加索引UserIdIsArchived表的列Fields。查询执行计划:

在此处输入图像描述


** 编辑 2:** 统计数据:

0 投票
1 回答
24 浏览

sql - 同一公司的T SQL地址表需要最新的联系方式

我有一个包含主要和次要公司位置的地址表,例如:

地址:

我们得到了另一个联系人表,其中包括每个公司位置的最新联系人

联系人

现在我们要选择每家公司的最新联系人并对它们进行排序,以便我们得到一个我们很长时间没有联系的所有客户的列表。

我想过这样的事情:

但这仍然缺少我们在地址表中多次获得同一家公司的事实。我如何创建一个列表,让每个公司都有最新的联系人?

谢谢你的帮助

问候