2016-07-19 1 views
2

私は複数の列を持つこのアドレステーブルを持っています。私は住所として街路番号と通り名の列を連結し、その住所が一意であるかどうかをチェックしたいと思います。マージとデュプリケート

SELECT (street_num + ' ' + street_name) AS Addr 
FROM [propertyaddress_workfinal] AS t1 
     INNER JOIN (SELECT (street_num + ' ' + street_name) AS A2 
        FROM [propertyaddress_workfinal]) AS t2 
       ON t1.addr = t2.a2 
WHERE Count(*) > 1 

無効な列名 'Addr'が表示されます。

ここで何かをやっている。

+0

PropertyAddress_Workfinalには「Addr」という列がありますか?そうでなければ、あなたの問題です。 t1.Addrで作成した列は参照できません。 –

+0

次に、結合の「選択」句で作成された列を参照するにはどうすればよいですか。私は2つの列の連結として列Addrを必要とするStreet name and Street Num –

+0

そして、あなたが 'where'で' count'を参照することはできず、 'group by'が見つからないことがわかります。とにかく自己結合は必要ありません。 –

答えて

2

これは、連結空間はあなたがそれら二つの複合インデックスを持っている場合

GROUP BY street_num, street_name 

に一致することは、より良い実行されますあなたの重複に不可欠ではない場合けれども、それを

SELECT street_num + ' ' + street_name AS Addr 
FROM [propertyaddress_workfinal] 
GROUP BY street_num + ' ' + street_name 
HAVING Count(*) > 1 

を行う方法であります列。

関連する問題