2014-12-02 61 views
0

我需要幫助在Oracle SQL Developer中編寫查詢,以查找哪個屬性匹配但相應屬性不同。例如,我需要查找地址字段匹配的記錄,但是緯度和經度列與相應記錄的值不同。找到相同基地址的緯度長度值不同的記錄

這就是我講的一個例子(記錄#3的問題):

ID  Address \t  latitude \t longitude 
 
1  1104 West St \t  35.3 \t -90.1 
 
2  1104 West St \t  35.3 \t -90.1 
 
3  1104 West St \t  36.4 \t -94.2

這樣做的關鍵是尋找到緯度長值是不同的相同的基地址。這樣的多個記錄存在的原因是因爲它們是建築物中的不同單元,這要歸功於提前。

+1

什麼構成了'基地address' - 一個最低的ID? – sgeddes 2014-12-02 16:12:10

+0

由基地址我只是指地址。所有記錄都是相同的值。 – NothingWorksandIveTriedNothing 2014-12-02 21:15:29

回答

1

使用分析函數,如果你想查看詳細的記錄。我們的想法是要計算每個地址的最小和最大的經度和緯度,然後對它們進行比較:

select ID, Address, latitude, longitude 
from (select t.*, 
      min(latitude) over (partition by address) as minlat, 
      max(latitude) over (partition by address) as maxlat, 
      min(longitude) over (partition by address) as minlong 
      max(longitude) over (partition by address) as maxlong 
     from table t 
    ) t 
where minlat <> maxlat or minlong <> maxlong 
order by address, id; 

如果數值爲浮點數實際存儲,那麼你可能想餘地的一點點:

where (maxlat - minlat) > 0.00001 or (maxlong - minlong) > 0.00001 

(注:因爲我知道這是更大和更小,不需要abs()

+0

嘗試了這一點,但我得到的錯誤告訴我在哪裏沒有找到FROM關鍵字。 – NothingWorksandIveTriedNothing 2014-12-02 18:21:03