0

このクエリを作成したビューでは、

SELECT DISTINCT 
ClientCode, ClientName, Address1, Address2, City, Country, CreatedBy, CreatedDate
FROM 
Contact
GROUP BY 
ClientCode, ClientName, Address1, Address2, City, Country, CreatedBy, CreatedDate

これにより、この結果が得られます。

001   ABC   Lot No,   Road,   City B,   US    Alice    03/04/2012
001   ABC   Lot No,   Road,   City B,   US    Benny    04/04/2012

重複データを除外できるようにするには、クエリをどのように設計すればよいですか? 1 行のデータのみを表示して、CreatedBy と CreatedDate の 2 つのフィールドを無視したかったのです。これが私が得たい結果です。

001   ABC   Lot No,   Road,   City B,   US    Alice    03/04/2012    !OR!
001   ABC   Lot No,   Road,   City B,   US    Benny    04/04/2012 

ClientCode、ClientName、Address1、Address2、City、および Country のみを比較して、重複データを除外する機能をクエリに持たせたいと考えています。CreatedBy と CreatedDate を保持する理由は、別のインターフェイスに含める必要があるためです。

4

2 に答える 2

0

ランキング機能を使用して、最新の日付に基づいて、各アドレスの最新の連絡先の詳細を取得できます。

with recentContact as
(
  select *
    , mostRecentRank = row_number() over
    (
      partition by ClientCode
        ,ClientName 
        ,Address1 
        ,Address2 
        ,City 
        ,Country
      order by CreatedDate desc
    )
  from contacts
)
select ClientCode
        ,ClientName 
        ,Address1 
        ,Address2 
        ,City 
        ,Country
        ,CreatedBy
        ,CreatedDate
from recentContact
where mostRecentRank = 1

demo を使用した SQL Fiddle

于 2013-04-08T08:18:10.943 に答える
0

追加してみてください

GROUP BY field

フィールドは、クライアント名のように等しい任意のフィールドである必要があります

特殊なケースでは、複数のフィールドを GROUP BY のように追加できます

GROUP BY clientname, clientfoo ..

于 2013-04-08T07:41:08.567 に答える