将 2 个内部查询的结果合并为 SQL 中的单个结果

问题描述 投票:0回答:1

我正在尝试将 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

我在这里做错了什么。 任何对此的帮助将不胜感激

sql rdbms
1个回答
0
投票

这是一个简短的示例,说明如何更改子查询在整个查询中的使用方式将返回结果,即使其中一个子查询不返回结果。

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 的查询将始终返回结果。

© www.soinside.com 2019 - 2024. All rights reserved.