使用连接和 if 语句

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

我正在尝试查询事件管理系统中的两个表 - 一个保存事件详细信息,另一个保存对第三方公司的引用,因此我尝试获取事件详细信息,以及来自不同第三方的引用(如果引用存在) 。如果它不存在,我想要返回一个空白行。但我真的不知道所需的语法。

我用来测试的代码非常基本:

SELECT i.incident_number,
r.reference
FROM incidents.i inner join references r
ON
i.incident_number = r.incident_number

引用表中有一列包含供应商详细信息,所以我想说的是,如果引用中的供应商列包含“供应商2”,则返回引用列的内容,如果没有对该供应商的引用,则返回空白行。

提前致谢。

sql sql-server if-statement join sql-server-2012
2个回答
1
投票

我认为您正在寻找

left join

SELECT i.incident_number, r.reference
FROM incidents.i LEFT JOIN 
     references r
     ON r.incident_number = i.incident_number AND
        r.supplier = 'Supplier 2';

0
投票

所以我想说,如果参考文献中的供应商栏包含 'supplier 2',则返回参考列的内容,如果 没有对该供应商的引用,返回空白行。

你想要的是像

这样的
CASE

声明
SELECT i.incident_number,
r.reference,
case when r.supplier = 'supplier2' then r.supplier else null end as supplier
FROM incidents.i inner join [references] r
ON i.incident_number = r.incident_number
© www.soinside.com 2019 - 2024. All rights reserved.