我正在尝试将 2 个内部 sql 查询的结果合并为一个结果,如果两个查询都返回结果,则此方法有效,否则如果任何一个内部查询没有返回结果,则两者都是空的。
select CASE sovereign.MaxDate
WHEN null THEN ''
ELSE sovereign.MaxDate END AS SovereignDate,
CASE economic.MaxDate
WHEN null THEN ''
ELSE economic.MaxDate END AS EconomicDate from
(select top 1 Doc_Pub_Date as MaxDate from content_ext.dbo.[sovereignrisk] rc where
rc.Code = 'BJ' order by Doc_Pub_Date desc) as sovereign,
(select top 1 Doc_Pub_Date as MaxDate from content_ext.dbo.[credit_conditions] rc where
rc.Code = 'BJ' order by Doc_Pub_Date desc) as economic
我在这里做错了什么。 任何对此的帮助将不胜感激
这是一个简短的示例,说明如何更改子查询在整个查询中的使用方式将返回结果,即使其中一个子查询不返回结果。
CREATE TABLE #a (val int);
CREATE TABLE #b (val2 int);
INSERT INTO #a VALUES (1);
SELECT * FROM
(
SELECT TOP 1 val FROM #a
) AS [aa],
(
SELECT TOP 1 val2 FROM #b
) AS [bb];
SELECT * FROM
(
SELECT TOP 1 val FROM #a
) AS [aa] FULL OUTER JOIN
(
SELECT TOP 1 val2 FROM #b
) AS [bb] ON 1=1;
DROP TABLE #a;
DROP TABLE #b;
从两个不同的结果集中可以看出,如果至少有一个子查询有结果,则使用 FULL OUTER JOIN 的查询将始终返回结果。