Sql server 在SQL server 2012中使用联接和if语句

Sql server 在SQL server 2012中使用联接和if语句,sql-server,if-statement,join,Sql Server,If Statement,Join,我已经对if语句进行了一些搜索,但没有找到正确的答案。如果我问了一个愚蠢的问题,请随意给我指出一条我可能错过的线索。但不管怎样,这是 我试图在事件管理系统中查询两个表-一个表保存事件详细信息,另一个表保存对第三方公司的引用,因此我试图获取事件详细信息,如果引用存在,则从不同的第三方获取引用。如果它不存在,我希望返回一个空白行。但我真的不知道所需的语法 我用来测试的代码非常基本: SELECT i.incident_number, r.reference FROM incidents.i inne

我已经对if语句进行了一些搜索,但没有找到正确的答案。如果我问了一个愚蠢的问题,请随意给我指出一条我可能错过的线索。但不管怎样,这是

我试图在事件管理系统中查询两个表-一个表保存事件详细信息,另一个表保存对第三方公司的引用,因此我试图获取事件详细信息,如果引用存在,则从不同的第三方获取引用。如果它不存在,我希望返回一个空白行。但我真的不知道所需的语法

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

SELECT i.incident_number,
r.reference
FROM incidents.i inner join references r
ON
i.incident_number = r.incident_number
references表中有一列包含供应商详细信息,因此我想说,如果references中的supplier列包含“supplier 2”,则返回reference列的内容,如果没有对该供应商的引用,则返回一个空行

我希望这是有道理的。如果需要,我很乐意提供更多信息。 提前谢谢

所以我想说,如果参考文献中的供应商列包含 “供应商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

我想您正在寻找一个
左连接

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';

如果您展示了两个表的示例数据和您期望的输出,那么将更容易为您提供帮助。感谢您提供了一个关于如何使用用例的好示例。这并不是我在本例中所追求的,但这有助于我下周要看的另一件事。