问题标签 [cross-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 回答
709 浏览

sql-server - 用 sum 在 sql 中交叉应用

我有以下查询:

它作用于下Tasks表:

Progress这样的xml 在哪里:

(通常有超过 2 个步骤..)

我的查询产生(不是实际数据,只是样本):

这几乎是我需要的,但不完全是。
我需要所有唯一的SUMTaskIDLS_HowOthersAnsweredLS_ImproveMyChances.
我试图分组,但没能成功,因为这与常规的内部连接太不同了..

0 投票
0 回答
67 浏览

tsql - 包括实际查询计划会增加执行时间

我使用的是 SQL Server 2005,我有一个相当复杂的查询,需要一两秒才能执行。

我想使用查询计划来调试性能,但是当我在输出中包含实际的执行计划时,查询从需要 2 秒到近 2 分钟 - 有时更长。

此查询中唯一有点有趣的代码是针对表值函数的几个交叉应用。有趣的是,当我删除这些交叉应用时,查询会在大约 100 毫秒内执行。

这是一个已知的问题?

0 投票
1 回答
299 浏览

linq - Devart Oracle 交叉应用异常

我遇到了一个问题,在一台机器上代码可以工作,而另一台机器不行。显然,我们正在使用相同的 Devart dotConnect for Oracle 版本(6.80.325.0)。问题是当我们在 LINQ 中有一个子查询并且我们得到 Oracle 不支持交叉应用时。

我读了很多关于它和子查询的文章,但我真的不明白为什么它在某些机器上可以,而在另一些机器上不行。我错过了安装中的一些修复吗?

谢谢。

0 投票
2 回答
17382 浏览

sql-server - 交叉应用以从 SQL Server 中的 Xml 获取子父值

我有以下 XML:

我想要通过使用 SQL Server 查询得到以下输出:

我正在使用以下 SQL 查询:

我无法获得包含父行值的第一列。您能否建议我可以进行哪些更改以获得第一列值?

0 投票
3 回答
1561 浏览

linq - LINQ 到 SQL。如何防止使用 Apply 运算符

我有一个查询:

此代码转换为 SQL:

该代码使用 Apply。如果将 Apply 替换为 Left Join代码会在几次内运行得更快。如何强制 Linq 使用左连接生成代码?

0 投票
2 回答
863 浏览

sql-server - 具有 CLR 集成表功能的高效交叉应用

在 SQL Server 中,我有一个基于 CLR 集成的表值函数 GetArchiveImages。我这样称呼它:

问题是对函数的每个单独调用都有开销。

如果它可以一次与整个表连接,开销将非常小,但由于它为每一行调用一次,所以开销会随着行数的增加而增加。

我不使用存储过程,因为存储过程返回的表不能与任何东西连接(据我所知)。

有没有一种有效的方法将表与存储过程或函数的结果批量连接,而不是逐行连接?

0 投票
1 回答
762 浏览

xml - 使用 XML 路径交叉应用(逗号划定) - 如果 > 1 则删除 Max Row

我想要的是如果它返回超过 1 然后删除MAX([year]) 行但返回其余的。这意味着如果 Cross Applyselect 返回 4 条记录,则仅返回 3。如果 3,则仅返回 2。如果 2,则仅返回 1。我相信最好的方法是将逗号更改为另一个字符(例如 #)。右搜索 # 删除所有内容 右下。如果我不使用 Cross Apply,我可能会有 3 行 Row(1)18 ----John Smith ---- BA ---- College1 --- 1990 Row(2) 18----John Smith ---MS---- Univ1-----2003 Row(3)18----John Smith ----BA ----Univ2 -----2010....我想删除第 (3) 行,因为它是学生最新/当前的学位信息。我只想要之前的学位、机构、年份而不是当前的。也许是 Right(rtrim(everthing after last comma) 但必须计数 下面是 SQL:

结果查询

PersonID -- 全名 -- 逗号学位 -- CommInst -- CommYear

18 -- John Smith -- 学士、硕士、博士 -- College1、Univ1、Univ2 -- 1990、2003、2010

45 -- Paul Ryan -- 学士、硕士 -- College15、Univ19 -- 1999、2008

134 -- 辛迪·琼斯 -- 文学学士 -- College56 -- 1978

我只想返回PRIOR学位、机构、年份。不是最新的。含义 PersonID 18 删除 PHd,Univ2,2010。PersonID 45 删除 MS,Univ19,2008。PersonID 134 保留原样,因为只有 1 条记录。

希望这是有道理的。提前致谢。

0 投票
3 回答
1897 浏览

sql - SQL 交叉应用

我有一个包含审计信息的 SQL 表:

并尝试显示审计记录之间的差异:

我正在使用以下 SQL 查询:

是否可以合并两个选择查询以提高性能?

0 投票
1 回答
66 浏览

xml - 如何从父节点查询所有子节点?

我有这个非常简单的 xml,并试图将<pcc>节点中的所有数据提取到结果集中。我读到我将以某种方式使用 CROSS APPLY,但到目前为止我的努力都失败了。

提前致谢。

0 投票
1 回答
1529 浏览

sql - 获取交叉应用内的最大行数

在我的 sql 案例中,我无法计算 row_number 的最大值。

我将直接在 SQL Fiddle 示例上进行解释,因为我认为它会更快地理解:SQL Fiddle

  • 列“OrderNumber”、“HourMinute”和“Code”仅代表我的表格,因此与编码目的无关
  • “DateOnly”列包含日期
  • “电话”列包含我客户的电话
  • “购买”列包含客户在过去 12 个月内购买的次数。请注意,该值是针对每个日期提供的,因此 12 个月的时间段是相对于我们正在评估的日期而言的。

最后,我试图生成的列是“PREVIOUSPURCHASES”,它计算“购买”列中提供的数字在过去 12 个月中出现的次数(对于每部手机)。

您可以在 SQL Fiddle 示例中看到我到目前为止所取得的成就。'PREVIOUSPURCHASES' 列正在产生我想要的东西,但是,它也产生了较低的值(例如,只有最大值是我需要的值)。

例如,您可以看到第 4 行和第 5 行是重复的,其中一个的“PREVIOUSPURCHASES”为 1,另一个为 2。在这种情况下,我不想拥有第 4 行。

我虽然想用 max(row_number) 之类的东西替换 row_number,但我无法生成它(已经在 stackoverflow 上看过类似的帖子......)。

这应该在 SQL Server 2012 中实现。

提前致谢。