0
在Oracle 12c中的數據庫,我有一個表的地址Oracle訂單或等級由字符串關鍵字
架構:行
Integer personId as PK
String source (what the source data from)
String address1
String address2
String post code
etc...
例如:
p1, news paper(Primary), add1, add2, ....
p1, google (Primary), add1, add2, ....
p1, phone (Secondary), add1, add2, ....
p2 new paper (Primary), add1, add2......
p3 phone (Secondary), add1, add2.....
問題: 我需要每個人都有一個獨特的地址。雖然大多數人將只有1地址,但存在這樣的情況,一個人結了2個或更多的地址
當前的解決方案:
select * from (
select person_id, source,row_number() over(partition by person_id order by source) rn from address
)a
where a.rn = 1
查詢以便通過源的字母順序重複,並刪除了其中的一個副本
但是我不能僅僅按照字母順序排列它,因爲任何源包含(主要)優先於任何其他來源,每個人也不能保證只有一個主要地址,它可能有兩個輔助地址或2個主地址,但在大多數情況下它會有一個主地址和一個輔助
您需要編寫一些業務規則並測試它們的有效性。看起來您沒有足夠的信息來達成一些明確的業務規則,而無需對外部數據集進行驗證。來源:我建立這樣做的系統。 – Ben
@ben你位於布裏斯托爾嗎? –
不,我不是...... – Ben