【发布时间】:2013-02-26 07:47:49
【问题描述】:
我有一个由四部分组成的链接服务器查询,它使用 UNION ALL 对动态创建的表进行 LEFT OUTER JOIN,类似于以下内容:
SELECT t.column1, rlt.s6, SUM(t.column3) column3
FROM Linked_server.database.schema.table t
LEFT OUTER JOIN (
SELECT 1 AS s7, 15 AS s6
UNION ALL SELECT 3, 1
UNION ALL SELECT 20, 16
) rlt ON (rlt.s7 = t.column2)
效果很好。但是,当我使用 OPENQUERY 函数运行相同的查询时,就像这样:
SELECT * FROM OPENQUERY(Linked_server, '
SELECT t.column1, rlt.s6, SUM(t.column3) column3
FROM database.schema.table t
LEFT OUTER JOIN (
SELECT 1 AS s7, 15 AS s6
UNION ALL SELECT 3, 1
UNION ALL SELECT 20, 16
) rlt ON (rlt.s7 = t.column2)
')
,LEFT OUTER JOIN 失败并且 s6 列仅包含 NULL。我知道我可以重写查询 #2 以使其工作,但我很好奇为什么它不能按照它的编写方式工作?是不是因为我不知道对 OPENQUERY 有一些限制?
【问题讨论】:
标签: sql sql-server union-all openquery