2013-03-14 4 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 долларов за час с минимальным выписанным временем в два часа, оплаченным авансом. У вас есть Paypal? – 2013-03-14 03:40:43

+0

Показать, что вы пробовали, а затем мы можем помочь ... Кроме того, какие RDBMS - это может быть DB специфическим ... – sgeddes

ответ

2

Вы не определил, которые RDBMS, но я предполагаю, что это нужно сделать:

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

Спасибо Havenard, Я использую SQL Server 2008 R2, , как о втором условии, которое Создано? А также, пожалуйста, рассмотрите это как пример того, что контактная таблица имеет больше клиентов, поэтому результат выбора будет относиться к отношениям один к одному в отношении этих условий. Еще раз спасибо за вашу помощь – Khash

+0

Не уверен, что вы имеете в виду, но я думаю, вы можете сортировать это самостоятельно, взяв запрос, который я только что дал вам в качестве модели. – Havenard

Смежные вопросы