Sql 显示不同城市的重复行

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

目标: 显示具有相似地址和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      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对不起,是我的错,我帮你们修好了!它完全有效!我已经编辑了我的答案并添加了结果,还将表名更改为您的表名。。。