2016-04-15 5 views
0

Ich habe zwei Tabellen untenVergleich Zwei Tabellen und Ausgabe Difference - T-SQL

Tabelle A

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

Tabelle B

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

Ich brauche E-Mails in den Tabellen entsprechen und Die folgende Tabelle mit T-SQL ausgeben:

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

Ähnlich wie SVERWEIS in Excel.

Könnten Sie bitte helfen, dies zu erreichen? Danke im Voraus.

Antwort

0

Man könnte so etwas wie (ungetestet) tun:

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

Dies sollte funktionieren wie erwartet.

Mindestens es auf das Verhalten von Excel entsprechen VLOOKUP

+0

das ist, was ich brauche :) Vielen Dank! –

1

Für willen Referenz, wollte ich, dass es davon abhängt, darauf hinzuweisen, ob die beiden Tabellen vollständig übereinstimmen. Dieser Code zeigt die verschiedenen Möglichkeiten, diese Situationen anzugehen. Es gibt bessere Beispiele (Ich mag besonders die, die mit Venn-Diagramme), aber diese könnte in der aktuellen Situation helfen:

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

Danke dafür :) –