2017-01-06 3 views
1

Ich habe zwei Tabellen, und ich möchte eine Ansicht erstellen, um sie zu verbinden.Wie zwei Tabellen mit CAST in SQL Server verbunden werden

IMAGE

habe ich ein Bild, mein Problem zu erklären. Wie Sie in obigem Bild sehen können, sind die Werte in Tabelle 1 eindeutig und ich möchte wissen, ob ein Wert in Tabelle 1 in Tabelle 2 existiert oder nicht. Ich möchte eine Spalte hinzufügen, die "NEIN" enthält Wenn sie nicht vorhanden ist, muss die zusätzliche Spalte "JA" enthalten.

Ich hoffe, ich könnte es mir erklären.

+0

http://meta.stackoverflow.com/questions/285551/why-may-i-not-upload-images-of-code -auf-so-wenn-eine Frage gestellt/285557 # 285557 –

Antwort

1

Sie können die Tabelle2 mit table1 verknüpfen und sehen, ob Zeilen vorhanden sind.

select t1.col, case when count(t2.col) = 0 then 'No' else 'Yes' end 
from table1 t1 
left join table2 t2 
on t1.col = t2.col 
group t1.col; 
2

ich würde dies als:

select t1.*, 
     (case when exists (select 1 from table2 t2 where t2.col = t1.col) 
      then 'YES' 
      else 'NO' 
     end) as flag 
from table1 t1; 

Dies sollte der effizienteste Weg sein, um dieses Ziel zu erreichen. Für die beste Leistung möchten Sie einen Index auf table2(col).

0
;with A as 
(select v from (values ('a'),('b'),('c'),('d'),('e')) v(v)) 
, B as 
(select v from (values ('a'),('a'),('b'),('b'),('b'),('c'),('c'),('d')) v(v)) 
-- This is where the magic happens 
select 
distinct a.v,case when b.v is null then 'NO' else 'YES' end existsinb 
from A 
left join B 
on a.v=b.v 
order by v 
0

Sie können beide Seiten überprüfen mit full join:

create view dbo.MyViewOfMissingValues 
as 
select 
    isnull(t1.col, t2.col) col, 
    case 
     when t2.col is null then 'No (missing in t2)' 
     when t1.col is null then 'No (missing in t1)' 
     else 'Yes' -- contained in both tables 
    end col_status 
from table1 t1 
full join table2 t2 
    on t1.col = t2.col 
group isnull(t1.col, t2.col); 
Verwandte Themen