1

テーブルt1(id、source、info、contact_date)があります。たとえば、idとsourceが主キーです。

id    source    info    contact_date
01   s1             …         2013-3-1
01   s2             …         2013-3-1
01   s3             …         2013-2-28
…

クエリを書きたいのですが、結果テーブルは次のようになります

id    source    info    contact_date
01   s1             …         2013-3-1

または

id    source    info    contact_date
01   s2             …         2013-3-1

主キーをidとcontact_dateに変更することを提案することもできますが、それはできません。元のデザインを維持する必要があります。現在、次のクエリがあります

select 
    t1.id, t1.source, t1.info, t1.contact_date 
from t1 
join
    (select id, max(contact_date) as contact_date 
     from t1 
     group by id) t2 on t1.id = t2.id and t1.contact_date = t2.contact_date

しかし、結果の表は下にありますが、これは私が望むものではありません。

id    source    info    contact_date
01   s1             …         2013-3-1
01   s2             …         2013-3-1

何か案が?

4

1 に答える 1

1

これで使用できますRanking Function

SELECT  id, source, info, contact_date
FROM
        (
            SELECT  id, source, info, contact_date,
                    ROW_NUMBER() OVER 
                    (PARTITION BY ID 
                     ORDER BY contact_date DESC) rn
            FROM    t1 
        ) x
WHERE   rn = 1
于 2013-03-21T14:51:54.743 に答える