2016-04-15 11 views
0

私はは、2つのテーブルと出力の違いを比較 - T-SQL

、私はテーブルに電子メールを一致させる必要が

表A

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

表B

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

の下に表示2つのテーブルを持っており、 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

参照のための」酒の振る舞いに対応して、私はそれは二つのテーブルが完全に一致しているか否かに依存していることを指摘したかったです。このコードは、これらの状況にアプローチするさまざまな方法を示しています。もっと良い例があります(私は特にVennダイアグラムのものが好きです)が、現在の状況で役に立ちます:

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

ありがとうございました:) –

関連する問題