У меня проблема. У меня есть две таблицы с одинаковыми столбцами. Я хочу создать третью таблицу, в которой будут строки id из этих двух таблиц, в которых четыре выбранных столбца будут одинаковыми.
Я решил проблему со сравнением данных null с isnull.
Я написал что-то вроде этого:
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
Все отлично работает, кроме этого кода:
SELECT City, Street, HouseNumber, PostCode
FROM Gymnasium
INTERSECT
SELECT City, Street, HouseNumber, PostCode
FROM PrimarySchool
вернул различное количество строк, что первый код.
Что я делаю не так?