0

データベースにいくつかのデータがあります:

名前 | 国 | 状態

メアリー | アメリカ | 保留中

ジェーン| 日本 | 保留中

ジェーン | 韓国 | 保留中

エイドリアン | 中国 | 中国 | 保留中

ピーター | ピーター | シンガポール | 保留中

ジャック | ジャック | マレーシア | 保留中

エイドリアン | 中国 | 中国 | 更新しました

ジェーン | 日本 | 更新しました

SELECT クエリを使用して、重複データのないすべてのデータを選択する方法を教えてください。(重複データが存在する場合は、更新済みのステータスのみを選択してください)

4

2 に答える 2

1

試す:

SELECT Name, Country, MAX(Status) as Status FROM (
SELECT TOP 100 PERCENT *
FROM NameCountry
ORDER BY Name ASC, Country ASC, Status DESC
) G
GROUP BY G.Name, G.Country
ORDER BY G.Name, G.Country

私のデモをチェック

于 2013-06-18T01:50:02.100 に答える
0

あなたのコメントから、最初の 2 つの列が重複しているデータのみを意味しているようです。row_number()最も簡単な方法は、ほとんどのデータベースで利用できるを使用することだと思います。

select name, country, status
from (select t.*,
             row_number() over (partition by name, country
                                order by (case when status = 'Pending' then 0 else 1 end)
                               ) as seqnum
      from t
     ) t
where seqnum = 1
于 2013-06-18T01:41:45.270 に答える