2017-02-07 78 views
2

目標:具有相似的地址和郵編,但不是城市 顯示行不同城市顯示重複的行

下面

要求的結果:

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') 

問題: 我不知道該如何找回它。

+0

你的樣本數據不匹配所希望的輸出。例如,只有一個與在採樣數據郵政編碼3460行,但是它出現在所希望的輸出三種不同的行。請修改您的問題以解決此問題。 –

+0

謝謝,我現在已經更新 –

回答

1

您可以使用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 

還是一個組數

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 
+0

該代碼無效 –

+0

@ What'sUP:對不起,我的錯,修復了它 – dnoeth

+0

比你們的幫助! –

0

您可以使用子查詢實現這一

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 
+0

我已經更新 –

+0

您是否嘗試過這個查詢的內容? PLZ給我一個反饋 – Hadi

+0

的代碼不能正常工作。 –

1

嘗試此代碼:

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; 

結果是:

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 
+0

它不起作用 –

+1

它完全可以工作!我編輯了我的答案並添加了結果,並將表名更改爲表名稱... –