我有两个典型的表,即一对多关系的客户和联系人 例如,我的表格填充如下:
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 :(得分:2)
你没有指定哪个RDBMS,但我认为应该这样做:
SELECT CustomerId, FName, LName, Address FROM Contact WHERE CustomerId = 1 GROUP BY FName, LName ORDER BY COUNT(*) DESC LIMIT 1