2013-03-14 42 views
-2

我有兩個典型的表,客戶和聯繫人與一對多的關係 比如我的表被填充像這樣:SQL,最頻繁出現的值

Customer 
------------- 
CustomerId 
    1 

Contact 
--------------- 
ContactId  CustomerId FName  LName  Address  CreatedAt 
    1    1   John  Smith  Add1   25/01/2013 
    2    1   John  Cole  Add1   26/01/2013 
    3    1   Alex  Cole  Add1   27/01/2013 
    4    1   John  Smith  Add2   28/01/2013 
    5    1   Alex     Add2   29/01/2013 

我想創建一個新的行出來的這5行具有以下條件:

對於每個字段(列)挑選出現頻率最高且不爲空或空白的字段。

如果沒有出現比其他更多的情況,則應使用最新的記錄不爲空或空白。

因此,對於上述例子的行應該是這樣的:

CustomerId FName  LName  Address 
    1   John  Smith  Add1 

感謝

+0

我可以寫這個查詢爲你。我每小時收費100美元,最低收費時間爲兩小時,預付費。你有貝寶? – 2013-03-14 03:40:43

+0

顯示你已經嘗試過,然後我們可以幫助...此外,哪些RDBMS - 這可以通過數據庫特定... – sgeddes 2013-03-14 03:48:33

回答

2

你沒有指定RDBMS,但我想這應該做的:

SELECT CustomerId, FName, LName, Address FROM Contact WHERE CustomerId = 1 GROUP BY FName, LName ORDER BY COUNT(*) DESC LIMIT 1 
+0

謝謝哈維納德, 我使用SQL Server 2008 R2, 第二個條件如何被創建了嗎? 也請考慮它作爲一個例子,聯繫人表具有更多的customerIds,因此選擇結果將與這些條件有一對一的關係。 再次感謝您的幫助 – Khash 2013-03-14 04:03:17

+0

不知道你的意思,但我想你可以自己把我剛剛給你的查詢作爲模型。 – Havenard 2013-03-14 04:44:42