2016-11-04 7 views
0

Ich habe 2 Tabellen, die Vorname, Nachname, dob enthält. Erste Tabelle hat Datentyp als Varchar für alle Spalten und zweite Tabelle ist Varchar (50), Varchar (50), Datetime-Datentyp.SQL Server Vergleichen Sie Zeilen einer Tabelle mit allen Zeilen der anderen Tabelle

Ex: 
1st table 
fname surname dob 
a  b  04/12/1948 
a  b  05/08/1984 

2nd table 
fname surname dob 
a  b  05/08/1984 
a  b  04/12/1948 

wenn ich das tue Intersect ist nicht die Dekore passende (möglicherweise b'ze von Datentyp) und außer mir führen.

Gibt es eine Möglichkeit alle Datensätze aus der Tabelle 1 mit passenden Datensätze der Tabelle wählen 2.

Jede Hilfe viel apprecciated

+0

Was das Problem ist, ich mit zwei Tabellen und Datentyp versucht habe, wie beschrieben, ich bin in der Lage Aufzeichnungen bitte –

+0

anzeigen erwartetes Ergebnis zu erhalten schneiden. – NEER

Antwort

1

Beide AUSSER und INTERSECT Arbeit:

Declare @tblA AS TABLE(
    FirstName VARCHAR(50), 
    SurName VARCHAR(50), 
    Dob VARCHAR(50) 
) 

Declare @tblB AS TABLE(
    FirstName VARCHAR(50), 
    SurName VARCHAR(50), 
    Dob Date 
) 

INSERT INTO @tblA VALUES 
('a','b','04/12/1948'), 
('a','b','05/08/1948') 

INSERT INTO @tblB VALUES 
('a','b','04/12/1948'), 
('a','b','05/09/1948') 

SELECT 
    * 
FROM @tblA 
INTERSECT 
SELECT 
    * 
FROM @tblB 

SELECT 
    * 
FROM @tblA 
EXCEPT 
SELECT 
    * 
FROM @tblB 

Ausgabe:

enter image description here

1
SELECT fname, surname, CAST(dob AS DATETIME) AS dob FROM table1 
INTERSECT 
SELECT fname, surname, dob FROM table2 
1

Verwenden Sie diese Abfrage.

Select * from table1 as a 
Inner join table2 as b 
on a.fname = b.fname and a.surname = b.surname and cast(a.dob as date)=b.dob 
1
SELECT * FROM #Table1 JOIN #Table2 ON #Table2.dob = CONVERT(DATETIME,#Table1.dob,101) 
Verwandte Themen