2017-06-16 70 views
1

我是一個長期的潛伏者,第一次海報,所以請溫柔!使用連接,如果在SQL server語句2012

我做的if語句一些搜索,但不能完全找到正確的答案。如果我要求一個愚蠢的問題,請隨時指出我可能錯過的一條線索。但無論如何,在這裏去...

我想查詢在事件管理系統中的兩個表 - 一個擁有事件的細節,其他持有第三方公司的引用,所以我試圖讓事件的詳細信息,以及如果參考文獻存在,則從不同的第三方引用。如果它不存在,我想要返回一個空行。但我真的不知道所需的語法。

我使用來測試代碼是非常基本的:

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

有在包含供應商的細節,所以我想說的參考文獻表中的列,如果在引用的供應商列中包含「供應商2',然後返回參考列的內容,如果沒有對該供應商的引用,則返回一個空白行。

我希望這是有道理的。如果需要,我很樂意提供更多信息。 在此先感謝。

+0

這將是更容易幫助你,如果你表現出對樣本數據兩個表格和您期望的輸出。 –

+0

https://docs.microsoft.com/en-us/sql/t-sql/language-elements/case-transact-sql –

回答

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

完美,謝謝! – user8171411

0

所以我想說的是,如果引用的供應商列包含 「供應商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 
+0

感謝如何使用CASE一個很好的例子。這並不是我在這個例子中所追求的,但是這有助於下一週我需要看的另一件事。 – user8171411