2016-04-15 73 views
0

我已經展示了下面比較兩個表與輸出差分 - T-SQL

表A

+-------+-------+-------+ 
| fname | lname | email | 
+-------+-------+-------+ 

表B

+-----------+-------+ 
| leavedate | email | 
+-----------+-------+ 

我需要匹配表中的電子郵件兩個表,並使用T-SQL輸出下表:

+-------+-------+-------+------------+ 
| fname | lname | email | leavedate | 
+-------+-------+-------+------------+ 

與excel中的VLOOKUP類似。

您能否幫助實現這一目標?提前致謝。

回答

0

你可以這樣做(未經測試):

SELECT * 
FROM TABLE_A TA 
LEFT JOIN TABLE_B TB ON TA.email = TB.email 

像您期望這應該工作。

至少它對應Excel的VLOOKUP

+0

這就是我需要:)非常感謝! –

1

供參考的緣故的行爲,我想指出的是,這取決於兩個表是否不完全匹配。此代碼顯示了處理這些情況的不同方式。有更好的例子(我特別喜歡那些維恩圖),但這些可能有助於目前的情況:

DECLARE @TableA TABLE (fname NVARCHAR(20), lname NVARCHAR(20), email NVARCHAR(30)) 
DECLARE @TableB TABLE (leavedate DATE, email NVARCHAR(30)) 

INSERT INTO @TableA (fname, lname, email) VALUES 
('Jim','Halpert','[email protected]'), 
('Pam','Beasley-Halpert','[email protected]'), 
('Michael','Scott','[email protected]'), 
('Toby','Flenderson','[email protected]') 

INSERT INTO @TableB (leavedate, email) VALUES 
    ('2010-05-04','[email protected]'), 
    ('2008-03-14','[email protected]') 

SELECT ta.*, tb.leavedate 
    FROM @TableA ta 
     LEFT JOIN @TableB tb 
      ON ta.email = tb.email 

SELECT ta.fname, ta.lname, tb.email, tb.leavedate 
    FROM @TableA ta 
     RIGHT JOIN @TableB tb 
      ON ta.email = tb.email 

SELECT ta.fname, ta.lname, COALESCE(ta.email,tb.email,''), tb.leavedate 
    FROM @TableA ta 
     FULL JOIN @TableB tb 
      ON ta.email = tb.email 
+0

感謝這:) –