我正在尝试查询事件管理系统中的两个表 - 一个保存事件详细信息,另一个保存对第三方公司的引用,因此我尝试获取事件详细信息,以及来自不同第三方的引用(如果引用存在) 。如果它不存在,我想要返回一个空白行。但我真的不知道所需的语法。
我用来测试的代码非常基本:
SELECT i.incident_number,
r.reference
FROM incidents.i inner join references r
ON
i.incident_number = r.incident_number
引用表中有一列包含供应商详细信息,所以我想说的是,如果引用中的供应商列包含“供应商2”,则返回引用列的内容,如果没有对该供应商的引用,则返回空白行。
提前致谢。
我认为您正在寻找
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';
所以我想说,如果参考文献中的供应商栏包含 '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