Reputation: 14100
Goal: Display row that has similar address and zipcode but not City
Requested result below:
Address ZipCode City
Biskop Svanes Vej 5 3460 Birkerød Ruteplan
Biskop Svanes Vej 5 3460 København S
Biskop Svanes Vej 5 3460 Holte
Peter Bangs Vej 30 2000 Frederiksberg
Peter Bangs Vej 30 2000 Holte
Kigkurren 8 R 2300 København
Kigkurren 8 R 2300 Køge
All data:
Lyneborggade 9 2300 København S
Biskop Svanes Vej 5 3460 Birkerød Ruteplan
Brogade 2 4300 Holbæk
Grønnevej 7 4600 København S
Kalkbrænderiløbskaj 4 2100 København Ø
Lyngbakkevej 14 2840 Holte
Peter Bangs Vej 30 2000 Frederiksberg
Biskop Svanes Vej 5 3460 Holte
Biskop Svanes Vej 5 3460 København S
Kigkurren 8 R 2300 København
Kigkurren 8 R 2300 Køge
Sourcecode:
Create Table #TempTable
(
[Address] nvarchar(80),
Zipcode nvarchar(50),
City nvarchar(50)
)
INSERT INTO #TempTable
(Address, Zipcode, City)
VALUES
('Lyneborggade 9','2300','København S'),
('Biskop Svanes Vej 5', '3460', 'Birkerød Ruteplan'),
('Brogade 2', '4300', 'Holbæk'),
('Grønnevej 7', '4600', 'København S'),
('Kalkbrænderiløbskaj 4', '2100', 'København Ø'),
('Lyngbakkevej 14', '2840', 'Holte'),
('Peter Bangs Vej 30', '2000', 'Frederiksberg'),
('Biskop Svanes Vej 5','3460','Holte'),
('Biskop Svanes Vej 5', '3460', 'København S'),
('Kigkurren 8 R', '2300', 'København'),
('Kigkurren 8 R', '2300', 'Køge')
Problem: I don't know how to retrieve it.
Upvotes: 2
Views: 69
Reputation: 3299
Try this code :
DECLARE @TempTable TABLE
(
[Address] NVARCHAR(80) ,
Zipcode NVARCHAR(50) ,
City NVARCHAR(50)
);
INSERT INTO @TempTable
( Address, Zipcode, City )
VALUES ( 'Lyneborggade 9', '2300', 'København S' ),
( 'Biskop Svanes Vej 5', '3460', 'Birkerød Ruteplan' ),
( 'Brogade 2', '4300', 'Holbæk' ),
( 'Grønnevej 7', '4600', 'København S' ),
( 'Kalkbrænderiløbskaj 4', '2100', 'København Ø' ),
( 'Lyngbakkevej 14', '2840', 'Holte' ),
( 'Peter Bangs Vej 30', '2000', 'Frederiksberg' ),
( 'Biskop Svanes Vej 5', '3460', 'Holte' ),
( 'Biskop Svanes Vej 5', '3460', 'København S' ),
( 'Kigkurren 8 R', '2300', 'København' ),
( 'Kigkurren 8 R', '2300', 'Køge' );
SELECT DISTINCT
A.Address ,
A.Zipcode ,
A.City
FROM @TempTable A
INNER JOIN #TempTable B ON A.Address = B.Address
AND A.Zipcode = B.Zipcode
AND A.City <> B.City;
The Result is:
Biskop Svanes Vej 5 3460 Birkerød Ruteplan
Biskop Svanes Vej 5 3460 Holte
Biskop Svanes Vej 5 3460 København S
Kigkurren 8 R 2300 København
Kigkurren 8 R 2300 Køge
Upvotes: 1
Reputation: 60472
You can use an EXISTS-subquery:
select Address, Zipcode, City
from #Temptable as T
Where exists
( select *
from #Temptable as T1
where T1.address = T.address -- same address & zip
and T1.zipcode = T.zipcode
and T1.city <> T.city -- but different city
)
order by Address, Zipcode, City
Or a Group Count:
WITH cte AS
( select t.*,
COUNT(*)
OVER (PARTITION BY Address, Zipcode) AS cnt
from #Temptable T1
)
select Address, Zipcode, City
from cte
where cnt > 1
order by Address, Zipcode, City
Upvotes: 1
Reputation: 37313
You can use Subqueries to achieve this
select Distinct Address, Zipcode, City
from #Temptable
Where exists (select Address, Zipcode
from #Temptable T1
where T1.address = address and T1.zipcode = zipcode
group by Address, Zipcode
having count(*) > 1)
order by Address, Zipcode, City
Upvotes: 0