Ich habe ein Problem. Ich habe zwei Tabellen mit den gleichen Spalten. Ich möchte eine dritte Tabelle erstellen, die ID-Zeilen von diesen beiden Tabellen haben wird, wobei vier ausgewählte Spalten gleich sind.SQL Server INNER JOIN mit Nullwert und Schnittpunkt
Ich löste Problem mit dem Vergleichen von Daten Null mit Isnull.
schrieb ich etwas wie folgt aus:
WITH cteCandidates (City, Street, HouseNumber, PostCode)
AS
(
SELECT City, Street, HouseNumber, PostCode
FROM Gymnasium
INTERSECT
SELECT City, Street, HouseNumber, PostCode
FROM PrimarySchool
)
select e.Id as 'Gymnasium',
p.Id as 'PrimarySchool'
FROM
Gymnasium AS e
Inner join cteCandidates AS c
on isnull(e.City ,'999999') = isnull(c.City ,'999999')
AND isnull(e.Street ,'999999') = isnull(c.Street ,'999999')
AND isnull(e.HouseNumber,'999999') = isnull(c.HouseNumber,'999999')
AND isnull(e.PostCode ,'999999') = isnull(c.PostCode ,'999999')
inner join PrimarySchool as p
on isnull(e.City ,'999999') = isnull(p.City ,'999999')
AND isnull(e.Street ,'999999') = isnull(p.Street ,'999999')
AND isnull(e.HouseNumber,'999999') = isnull(p.HouseNumber,'999999')
AND isnull(e.PostCode ,'999999') = isnull(p.PostCode ,'999999')
order by PrimarySchool
Alles funktioniert, außer dass Code in Ordnung:
SELECT City, Street, HouseNumber, PostCode
FROM Gymnasium
INTERSECT
SELECT City, Street, HouseNumber, PostCode
FROM PrimarySchool
unterschiedliche Anzahl der Zeilen, die der erste Code zurückgegeben.
Was mache ich falsch?
Sie hatten Recht. Ich habe doppelte Zeilen in diesen Tabellen. Danke für die Antwort! –