私は問題があります。同じ列のテーブルが2つあります。これらの2つのテーブルからidの行を持つ3番目のテーブルを作成します。ここで、選択した4つの列は同じになります。
データ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
最初のコードとは異なる行数を返しました。
私は何が間違っているのですか?