-3

1 対多の関係を持つ Customer と Contact の 2 つの典型的なテーブルがあります。たとえば、私のテーブルは次のように取り込まれます。

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 つの行から新しい行を作成したいと思います。

各フィールド (列) について、最も頻繁に発生し、null または空でないものを選択します。

他のレコードよりも多く発生しない場合は、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 に答える