【发布时间】:2018-11-23 13:26:35
【问题描述】:
我想使用 OUTER Apply 从两个子查询中获取结果,但它不起作用。下面我以我正在尝试执行的查询的框架为例:
SELECT DISTINCT D.Field1, D.Field2, S.Field1, S.Field2
FROM (
SELECT Field1, Field2
FROM Table1 t1 INNER JOIN Table2 t2 on t1.CommonField = t2.CommonField
INNER JOIN Table3 t3 on t3.CommonField = t2.CommonField
LEFT JOIN Table4 t4 on t4.CommonField = t3.CommonField
WHERE t1.Date > '20181011'
) D OUTER APPLY
(
SELECT Field1, Field2
FROM Table5 t5 INNER JOIN Table6 t6 on t6.CommonField = t5.CommonField
INNER JOIN Table7 t7 on t7.CommonField = t6.CommonField
WHERE t5.Field4 = 'SomeWhat'
GROUP BY t5.Date
) S
SQL Server 解析器给我一个错误: 'D' 附近的语法错误。
我使用的是 SQL Server 2008。
【问题讨论】:
-
“骨架”在语法上看起来不错。问题出在其他地方。
-
那个 GROUP BY 在那里做什么?您没有选择 t5.Date 并且没有汇总...
-
我怀疑这是一个匿名查询(谁会真正将所有对象命名为
table{n}、field{n}和commonfield,并且不会在几个小时后发疯,因为他们不知道是什么不再是什么了),并且 OP 已经将其匿名化,以至于它已成为一个有效的查询(除了@LordPeter 提到的GROUP BY问题)。发布您的实际查询,而不是代表它的查询,但不显示您遇到的问题。 -
query s 和 query d 的关系在哪里?
-
大家好,非常抱歉。我没有发布真正的查询,因为它是机密的。我已经解决了,这是一个缺少的括号。再次非常抱歉,非常感谢您的建议和支持。
标签: sql-server sql-server-2008 sql-server-2008-r2