-3

我有两个典型的表,客户和联系人具有一对多关系例如我的表填充如下:

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 行中创建一个新行:

对于每个字段(列),选择出现频率最高且不为空或为空的字段。

如果 non 发生的次数多于其他记录,则应使用不为 null 或为空的最新记录。

所以对于上面提到的例子,行应该是这样的:

CustomerId    FName      LName       Address 
    1         John       Smith        Add1

谢谢

4

1 回答 1

2

您没有指定哪个 RDBMS,但我认为应该这样做:

SELECT CustomerId, FName, LName, Address FROM Contact WHERE CustomerId = 1 GROUP BY FName, LName ORDER BY COUNT(*) DESC LIMIT 1
于 2013-03-14T03:54:58.893 回答