Sql 显示不同城市的重复行
目标: 显示具有相似地址和zipcode但不具有城市的行 要求的结果如下:Sql 显示不同城市的重复行,sql,sql-server,tsql,Sql,Sql Server,Tsql,目标: 显示具有相似地址和zipcode但不具有城市的行 要求的结果如下: 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 Frederiksbe
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
所有数据:
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
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')
源代码:
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
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')
问题:
我不知道如何检索它。您可以使用子查询来实现这一点
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
您可以使用EXISTS子查询:
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
请尝试以下代码:
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;
您的示例数据与所需的输出不匹配。例如,示例数据中只有一行邮政编码为3460,但它显示在所需输出的三个不同行上。请编辑您的问题以解决此问题。谢谢,我现在有了updated@What对不起,是我的错,我帮你们修好了!它完全有效!我已经编辑了我的答案并添加了结果,还将表名更改为您的表名。。。