簡體   English   中英

Oracle 11g - select 表中每個城鎮只有一行

[英]Oracle 11g - select only one row for each town in a table

我有一張包含 300K 記錄的表,但只有約 100 個獨特的城鎮名稱。 我需要 sql 為每個單獨的城鎮名稱返回 1 行。 表結構:

唯一身份 街道號碼 街道名稱 STREET_TYPE ZIP
UID01 11 特洛伊 街道 阿什菲爾德 2017
UID02 13 阿什菲爾德 2017
UID03 2 坦率 法庭 埃默頓 2021
UID04 8 丹尼斯 樹林 薩克維爾 2028
UID05 97 蘋果電腦 新月 薩克維爾 2028
UID06 102 查理 薩克維爾 2028
UID07 70 大道 溫莎 2033
UID08 27 罌粟 街道 溫莎 2033
UID09 33 盟國 方法 巴戈 2315
UID10 48 ELS 大街 巴戈 2315

我試圖讓返回的數據類似於:

唯一身份 街道號碼 街道名稱 STREET_TYPE ZIP
UID01 11 特洛伊 街道 阿什菲爾德 2017
UID03 2 坦率 法庭 埃默頓 2021
UID04 8 丹尼斯 樹林 薩克維爾 2028
UID07 70 大道 溫莎 2033
UID09 33 盟國 方法 巴戈 2315

不關心每個城鎮名稱返回哪個記錄,但每個城鎮需要一個記錄。

我瀏覽了各種類似的帖子,但似乎無法使語法正確。

我可以使用這個 select 每個單獨的城鎮名稱:

select min(TOWN) keep (dense_rank first order by rownum) TOWN
from ADDRESS_TABLE group by TOWN;

但不確定如何讓其他附加數據也返回。

請幫忙?

如果你不關心拿哪一個,那么就拿其中任何一個(例如,首先通過unique_id ):

WITH
   temp
   AS
      (SELECT unique_id,
              street_number,
              street_name,
              street_type,
              town,
              zip,
              ROW_NUMBER () OVER (PARTITION BY town ORDER BY unique_id) rn
         FROM address_table)
SELECT unique_id,
       street_number,
       street_name,
       street_type,
       town,
       zip
  FROM temp
 WHERE rn = 1

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM