2016-11-04 105 views
0

我有兩個表,其中包含姓,名,dob。 第一個表的數據類型爲所有列的varchar,第二個表爲varchar(50),varchar(50),datetime數據類型。SQL Server將一個表的行與其他表的所有行進行比較

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 

當我這樣做是相交不匹配的裝飾(可能是數據類型的b'ze) 並且除了給我造成的。

有沒有辦法選擇從表1中的所有記錄與表的匹配記錄2

多apprecciated

+0

問題是什麼,我試圖與所描述的兩個表和數據類型,我能夠得到相交記錄 –

+0

顯示預期的結果吧。 – NEER

回答

1

兩個EXCEPT任何幫助INTERSECT工作:

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 

輸出:

enter image description here

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

使用此查詢。

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) 
相關問題